pub struct FlexPath(/* private fields */);Expand description
The FlexPath structure represents an always-resolved textual file path based
on a [FlexPathVariant].
Implementations§
Source§impl FlexPath
impl FlexPath
Sourcepub fn new(path: &str, variant: FlexPathVariant) -> Self
pub fn new(path: &str, variant: FlexPathVariant) -> Self
Constructs a FlexPath with a given variant. This method
will resolve the specified path.
Sourcepub fn new_common(path: &str) -> Self
pub fn new_common(path: &str) -> Self
Constructs a FlexPath whose variant is Common. This method
will resolve the specified path.
Sourcepub fn new_native(path: &str) -> Self
pub fn new_native(path: &str) -> Self
Constructs a FlexPath whose variant is chosen according to the target platform.
This method will resolve the specified path.
Sourcepub fn from_n<'a, T: IntoIterator<Item = &'a str>>(
paths: T,
variant: FlexPathVariant,
) -> Self
pub fn from_n<'a, T: IntoIterator<Item = &'a str>>( paths: T, variant: FlexPathVariant, ) -> Self
Constructs a FlexPath from multiple paths and a given variant.
Sourcepub fn from_n_common<'a, T: IntoIterator<Item = &'a str>>(paths: T) -> Self
pub fn from_n_common<'a, T: IntoIterator<Item = &'a str>>(paths: T) -> Self
Constructs a FlexPath from multiple paths and a Common variant.
Sourcepub fn from_n_native<'a, T: IntoIterator<Item = &'a str>>(paths: T) -> Self
pub fn from_n_native<'a, T: IntoIterator<Item = &'a str>>(paths: T) -> Self
Constructs a FlexPath from multiple paths and a variant based on
the target platform.
Sourcepub fn variant(&self) -> FlexPathVariant
pub fn variant(&self) -> FlexPathVariant
Returns the variant this FlexPath object is based on.
Sourcepub fn is_absolute(&self) -> bool
pub fn is_absolute(&self) -> bool
Indicates whether the FlexPath is absolute or not.
Sourcepub fn resolve(&self, path2: &str) -> FlexPath
pub fn resolve(&self, path2: &str) -> FlexPath
Resolves path2 relative to path1.
Behavior:
- Eliminates the segments
..and.. - If
path2is absolute, this function returns a resolution of solelypath2. - All path separators that are backslashes (
\) are replaced by forward ones (/). - If any path is absolute, this function returns an absolute path.
- Any empty segment and trailing path separators, such as in
a/b/anda//bare eliminated.
Sourcepub fn resolve_n<'a, T: IntoIterator<Item = &'a str>>(
&self,
paths: T,
) -> FlexPath
pub fn resolve_n<'a, T: IntoIterator<Item = &'a str>>( &self, paths: T, ) -> FlexPath
Resolves multiple paths relative to this path. The
behavior is similiar to [.resolve]. If the given
set has no items, an empty string is returned.
Sourcepub fn relative(&self, to_path: &str) -> String
pub fn relative(&self, to_path: &str) -> String
Finds the relative path from this path to to_path.
§Behavior:
- If the paths refer to the same path, this function returns an empty string.
- The function ensures that both paths are absolute and resolves
any
..and.segments inside. - If both paths have different prefix,
to_pathis returned.
§Panics
Panics if given paths are not absolute.
§Example
use realhydroper_path::FlexPath;
assert_eq!("", FlexPath::new_common("/a/b").relative("/a/b"));
assert_eq!("c", FlexPath::new_common("/a/b").relative("/a/b/c"));
assert_eq!("../../c/d", FlexPath::new_common("/a/b").relative("/c/d"));
assert_eq!("../c", FlexPath::new_common("/a/b").relative("/a/c"));Sourcepub fn change_extension(&self, extension: &str) -> FlexPath
pub fn change_extension(&self, extension: &str) -> FlexPath
Changes the extension of a path and returns a new string.
This method adds any lacking dot (.) prefix automatically to the
extension argument.
This method allows multiple dots per extension. If that is not
desired, use [.change_last_extension].
§Example
use realhydroper_path::FlexPath;
assert_eq!("a.y", FlexPath::new_common("a.x").change_extension(".y").to_string());
assert_eq!("a.z", FlexPath::new_common("a.x.y").change_extension(".z").to_string());
assert_eq!("a.z.w", FlexPath::new_common("a.x.y").change_extension(".z.w").to_string());Sourcepub fn change_last_extension(&self, extension: &str) -> FlexPath
pub fn change_last_extension(&self, extension: &str) -> FlexPath
Changes only the last extension of a path and returns a new string.
This method adds any lacking dot (.) prefix automatically to the
extension argument.
§Panics
Panics if the extension contains more than one dot.
Sourcepub fn has_extension(&self, extension: &str) -> bool
pub fn has_extension(&self, extension: &str) -> bool
Checks if a file path has a specific extension.
This method adds any lacking dot (.) prefix automatically to the
extension argument.
Sourcepub fn has_extensions<'a, T: IntoIterator<Item = &'a str>>(
&self,
extensions: T,
) -> bool
pub fn has_extensions<'a, T: IntoIterator<Item = &'a str>>( &self, extensions: T, ) -> bool
Checks if a file path has any of multiple specific extensions.
This method adds any lacking dot (.) prefix automatically to each
extension argument.
Sourcepub fn base_name(&self) -> String
pub fn base_name(&self) -> String
Returns the base name of a file path.
§Example
use realhydroper_path::FlexPath;
assert_eq!("qux.html", FlexPath::new_common("foo/qux.html").base_name());Sourcepub fn base_name_without_ext<'a, T>(&self, extensions: T) -> Stringwhere
T: IntoIterator<Item = &'a str>,
pub fn base_name_without_ext<'a, T>(&self, extensions: T) -> Stringwhere
T: IntoIterator<Item = &'a str>,
Returns the base name of a file path, removing any of the specified extensions.
This method adds any lacking dot (.) prefix automatically to each
extension argument.
§Example
use realhydroper_path::FlexPath;
assert_eq!("qux", FlexPath::new_common("foo/qux.html").base_name_without_ext([".html"]));