use crate::error::IoResultExt; use crate::TempDir; use std::io; use std::path::PathBuf; pub fn create( path: PathBuf, permissions: Option<&std::fs::Permissions>, keep: bool, ) -> io::Result { let mut dir_options = std::fs::DirBuilder::new(); #[cfg(not(target_os = "wasi"))] { use std::os::unix::fs::{DirBuilderExt, PermissionsExt}; if let Some(p) = permissions { dir_options.mode(p.mode()); } } dir_options .create(&path) .with_err_path(|| &path) .map(|_| TempDir { path: path.into_boxed_path(), keep, }) }