pub enum UnixComponent<'a> {
RootDir,
CurDir,
ParentDir,
Normal(&'a [u8]),
}
Expand description
Byte slice version of std::path::Component
that represents a Unix-specific component
Variants§
Implementations§
Trait Implementations§
Source§impl AsRef<[u8]> for UnixComponent<'_>
impl AsRef<[u8]> for UnixComponent<'_>
Source§impl<'a> Clone for UnixComponent<'a>
impl<'a> Clone for UnixComponent<'a>
Source§fn clone(&self) -> UnixComponent<'a>
fn clone(&self) -> UnixComponent<'a>
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moreSource§impl<'a> Component<'a> for UnixComponent<'a>
impl<'a> Component<'a> for UnixComponent<'a>
Source§fn as_bytes(&self) -> &'a [u8] ⓘ
fn as_bytes(&self) -> &'a [u8] ⓘ
Extracts the underlying [[u8]
] slice
§Examples
use typed_path::{Component, UnixPath};
let path = UnixPath::new(b"/tmp/foo/../bar.txt");
let components: Vec<_> = path.components().map(|comp| comp.as_bytes()).collect();
assert_eq!(&components, &[
b"/".as_slice(),
b"tmp".as_slice(),
b"foo".as_slice(),
b"..".as_slice(),
b"bar.txt".as_slice(),
]);
Source§fn is_root(&self) -> bool
fn is_root(&self) -> bool
Returns true if is the root dir component
§Examples
use typed_path::{Component, UnixComponent};
use std::convert::TryFrom;
let root_dir = UnixComponent::try_from(b"/").unwrap();
assert!(root_dir.is_root());
let normal = UnixComponent::try_from(b"file.txt").unwrap();
assert!(!normal.is_root());
Source§fn is_normal(&self) -> bool
fn is_normal(&self) -> bool
Returns true if is a normal component
§Examples
use typed_path::{Component, UnixComponent};
use std::convert::TryFrom;
let normal = UnixComponent::try_from(b"file.txt").unwrap();
assert!(normal.is_normal());
let root_dir = UnixComponent::try_from(b"/").unwrap();
assert!(!root_dir.is_normal());
Source§fn is_parent(&self) -> bool
fn is_parent(&self) -> bool
Returns true if is a parent directory component
§Examples
use typed_path::{Component, UnixComponent};
use std::convert::TryFrom;
let parent = UnixComponent::try_from("..").unwrap();
assert!(parent.is_parent());
let root_dir = UnixComponent::try_from("/").unwrap();
assert!(!root_dir.is_parent());
Source§fn is_current(&self) -> bool
fn is_current(&self) -> bool
Returns true if is the current directory component
§Examples
use typed_path::{Component, UnixComponent};
use std::convert::TryFrom;
let current = UnixComponent::try_from(".").unwrap();
assert!(current.is_current());
let root_dir = UnixComponent::try_from("/").unwrap();
assert!(!root_dir.is_current());
Source§fn is_valid(&self) -> bool
fn is_valid(&self) -> bool
Returns true if this component is valid.
A component can only be invalid if it represents a normal component with bytes that are disallowed by the encoding.
§Examples
use typed_path::{Component, UnixComponent};
assert!(UnixComponent::RootDir.is_valid());
assert!(UnixComponent::ParentDir.is_valid());
assert!(UnixComponent::CurDir.is_valid());
assert!(UnixComponent::Normal(b"abc").is_valid());
assert!(!UnixComponent::Normal(b"\0").is_valid());
Source§fn root() -> Self
fn root() -> Self
Returns the root directory component.
§Examples
use typed_path::{Component, UnixComponent};
assert_eq!(UnixComponent::root(), UnixComponent::RootDir);
Source§fn parent() -> Self
fn parent() -> Self
Returns the parent directory component.
§Examples
use typed_path::{Component, UnixComponent};
assert_eq!(UnixComponent::parent(), UnixComponent::ParentDir);
Source§impl<'a> Debug for UnixComponent<'a>
impl<'a> Debug for UnixComponent<'a>
Source§impl<'a> Hash for UnixComponent<'a>
impl<'a> Hash for UnixComponent<'a>
Source§impl<'a> Ord for UnixComponent<'a>
impl<'a> Ord for UnixComponent<'a>
Source§fn cmp(&self, other: &UnixComponent<'a>) -> Ordering
fn cmp(&self, other: &UnixComponent<'a>) -> Ordering
1.21.0 · Source§fn max(self, other: Self) -> Selfwhere
Self: Sized,
fn max(self, other: Self) -> Selfwhere
Self: Sized,
Source§impl<'a> PartialEq for UnixComponent<'a>
impl<'a> PartialEq for UnixComponent<'a>
Source§impl<'a> PartialOrd for UnixComponent<'a>
impl<'a> PartialOrd for UnixComponent<'a>
Source§impl<'a> TryFrom<&'a [u8]> for UnixComponent<'a>
impl<'a> TryFrom<&'a [u8]> for UnixComponent<'a>
Source§fn try_from(path: &'a [u8]) -> Result<Self, Self::Error>
fn try_from(path: &'a [u8]) -> Result<Self, Self::Error>
Parses the byte slice into a UnixComponent
§Examples
use typed_path::UnixComponent;
use std::convert::TryFrom;
// Supports parsing standard unix path components
assert_eq!(UnixComponent::try_from(b"/"), Ok(UnixComponent::RootDir));
assert_eq!(UnixComponent::try_from(b"."), Ok(UnixComponent::CurDir));
assert_eq!(UnixComponent::try_from(b".."), Ok(UnixComponent::ParentDir));
assert_eq!(UnixComponent::try_from(b"file.txt"), Ok(UnixComponent::Normal(b"file.txt")));
assert_eq!(UnixComponent::try_from(b"dir/"), Ok(UnixComponent::Normal(b"dir")));
// Parsing more than one component will fail
assert!(UnixComponent::try_from(b"/file").is_err());
Source§impl<'a> TryFrom<&'a str> for UnixComponent<'a>
impl<'a> TryFrom<&'a str> for UnixComponent<'a>
Source§impl<'a> TryFrom<Component<'a>> for UnixComponent<'a>
impl<'a> TryFrom<Component<'a>> for UnixComponent<'a>
Source§fn try_from(component: Component<'a>) -> Result<Self, Self::Error>
fn try_from(component: Component<'a>) -> Result<Self, Self::Error>
Attempts to convert a std::path::Component
into a UnixComponent
, returning a result
containing the new component when successful or the original component when failed
§Examples
use std::convert::TryFrom;
use std::ffi::OsStr;
use std::path::Component;
use typed_path::UnixComponent;
let component = UnixComponent::try_from(Component::RootDir).unwrap();
assert_eq!(component, UnixComponent::RootDir);
let component = UnixComponent::try_from(Component::CurDir).unwrap();
assert_eq!(component, UnixComponent::CurDir);
let component = UnixComponent::try_from(Component::ParentDir).unwrap();
assert_eq!(component, UnixComponent::ParentDir);
let component = UnixComponent::try_from(Component::Normal(OsStr::new("file.txt"))).unwrap();
assert_eq!(component, UnixComponent::Normal(b"file.txt"));
Source§impl<'a> TryFrom<UnixComponent<'a>> for Component<'a>
impl<'a> TryFrom<UnixComponent<'a>> for Component<'a>
Source§fn try_from(component: UnixComponent<'a>) -> Result<Self, Self::Error>
fn try_from(component: UnixComponent<'a>) -> Result<Self, Self::Error>
Attempts to convert a UnixComponent
into a std::path::Component
, returning a result
containing the new path when successful or the original path when failed
§Examples
use std::convert::TryFrom;
use std::ffi::OsStr;
use std::path::Component;
use typed_path::UnixComponent;
let component = Component::try_from(UnixComponent::RootDir).unwrap();
assert_eq!(component, Component::RootDir);
let component = Component::try_from(UnixComponent::CurDir).unwrap();
assert_eq!(component, Component::CurDir);
let component = Component::try_from(UnixComponent::ParentDir).unwrap();
assert_eq!(component, Component::ParentDir);
let component = Component::try_from(UnixComponent::Normal(b"file.txt")).unwrap();
assert_eq!(component, Component::Normal(OsStr::new("file.txt")));