1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
#[cfg(feature = "async")] #[path = "par.rs"] mod imports; #[cfg(not(feature = "async"))] #[path = "sync.rs"] mod imports; pub use imports::*; use anyhow::{Context, Result}; use std::path::{Path, PathBuf}; pub fn stringify_path<P: AsRef<Path>>(path: &P) -> Result<&str> { let path = path.as_ref(); path.to_str() .with_context(|| format!("`{}` is not a valid UTF-8 string", path.display())) } pub fn replace_prefix<P: AsRef<Path>>(path: P, from: P, to: P) -> Result<PathBuf> { let from = from.as_ref(); let to = to.as_ref(); let path = path.as_ref(); let path = path.strip_prefix(from).with_context(|| { format!( "Strip prefix `{}` from `{}`", from.display(), path.display() ) })?; let result = to.join(path); Ok(result) }