whoami/
conversions.rs

1use std::{
2    ffi::OsString,
3    io::{Error, ErrorKind},
4};
5
6use crate::Result;
7
8pub(crate) fn string_from_os(string: OsString) -> Result<String> {
9    #[cfg(any(
10        all(not(target_os = "windows"), not(target_arch = "wasm32")),
11        all(target_arch = "wasm32", target_os = "wasi"),
12    ))]
13    {
14        #[cfg(not(target_os = "wasi"))]
15        use std::os::unix::ffi::OsStringExt;
16        #[cfg(target_os = "wasi")]
17        use std::os::wasi::ffi::OsStringExt;
18
19        String::from_utf8(string.into_vec())
20            .map_err(|e| Error::new(ErrorKind::InvalidData, e))
21    }
22
23    #[cfg(any(
24        target_os = "windows",
25        all(target_arch = "wasm32", not(target_os = "wasi")),
26    ))]
27    {
28        string.into_string().map_err(|_| {
29            Error::new(ErrorKind::InvalidData, "Not valid unicode")
30        })
31    }
32}