pub trait PathOps: PathInfo {
type Output: PathOps;
// Required methods
fn concat<P: AsRef<Path>>(&self, path: P) -> Result<Self::Output>;
fn join<P: AsRef<Path>>(&self, path: P) -> Self::Output;
fn with_file_name<S: AsRef<OsStr>>(&self, file_name: S) -> Self::Output;
fn with_extension<S: AsRef<OsStr>>(&self, extension: S) -> Self::Output;
}Expand description
Methods that return new path-like objects.
Like the methods of PathInfo and PathMut, these methods are similar
to ones from the standard library’s PathBuf but may return a rich
path_abs::Error instead of a std::io::Error (although it will
automatically convert into a std::io::Error with ? if needed).
Unlike the methods of PathInfo and PathMut, different types that
implement this trait may have different return types.
Required Associated Types§
Required Methods§
sourcefn concat<P: AsRef<Path>>(&self, path: P) -> Result<Self::Output>
fn concat<P: AsRef<Path>>(&self, path: P) -> Result<Self::Output>
Returns a new value representing the concatenation of two paths.
Note that this method represents pure concatenation, not “adjoinment”
like PathBuf::join, so absolute paths won’t wholly replace the
current path. See append for more information about how it works.
Errors
This method returns an error if the result would try to go outside a filesystem root,
like / on Unix or C:\ on Windows.
Example
use path_abs::{PathInfo, PathOps, Result};
fn find_config_file<P: PathOps>(
search_path: &[P],
file_name: &str,
) -> Option<<P as PathOps>::Output> {
for each in search_path.iter() {
if let Ok(maybe_config) = each.concat(file_name) {
if maybe_config.is_file() { return Some(maybe_config); }
}
}
None
}sourcefn join<P: AsRef<Path>>(&self, path: P) -> Self::Output
fn join<P: AsRef<Path>>(&self, path: P) -> Self::Output
An exact replica of std::path::Path::join with all of its gotchas and pitfalls,, except
returns a more relevant type.
In general, prefer concat
sourcefn with_file_name<S: AsRef<OsStr>>(&self, file_name: S) -> Self::Output
fn with_file_name<S: AsRef<OsStr>>(&self, file_name: S) -> Self::Output
Creates a new path object like self but with the given file name.
The same as std::path::Path::with_file_name(), except that the
return type depends on the trait implementation.
sourcefn with_extension<S: AsRef<OsStr>>(&self, extension: S) -> Self::Output
fn with_extension<S: AsRef<OsStr>>(&self, extension: S) -> Self::Output
Creates a new path object like self but with the given extension.
The same as std::path::Path::with_extension(), except that the
return type depends on the trait implementation.