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}