Enum typed_path::UnixComponent
source · 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>
Returns a copy of the value. Read more
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
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 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,
Compares and returns the maximum of two values. Read more
source§impl<'a> PartialEq for UnixComponent<'a>
impl<'a> PartialEq for UnixComponent<'a>
source§fn eq(&self, other: &UnixComponent<'a>) -> bool
fn eq(&self, other: &UnixComponent<'a>) -> bool
This method tests for
self
and other
values to be equal, and is used
by ==
.source§impl<'a> PartialOrd for UnixComponent<'a>
impl<'a> PartialOrd for UnixComponent<'a>
source§fn partial_cmp(&self, other: &UnixComponent<'a>) -> Option<Ordering>
fn partial_cmp(&self, other: &UnixComponent<'a>) -> Option<Ordering>
1.0.0 · source§fn le(&self, other: &Rhs) -> bool
fn le(&self, other: &Rhs) -> bool
This method tests less than or equal to (for
self
and other
) and is used by the <=
operator. Read moresource§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: StdComponent<'a>) -> Result<Self, Self::Error>
fn try_from(component: StdComponent<'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")));
§type Error = UnixComponent<'a>
type Error = UnixComponent<'a>
The type returned in the event of a conversion error.
source§impl<'a> TryFrom<UnixComponent<'a>> for Utf8UnixComponent<'a>
impl<'a> TryFrom<UnixComponent<'a>> for Utf8UnixComponent<'a>
impl<'a> Copy for UnixComponent<'a>
impl<'a> Eq for UnixComponent<'a>
impl<'a> StructuralEq for UnixComponent<'a>
impl<'a> StructuralPartialEq for UnixComponent<'a>
Auto Trait Implementations§
impl<'a> RefUnwindSafe for UnixComponent<'a>
impl<'a> Send for UnixComponent<'a>
impl<'a> Sync for UnixComponent<'a>
impl<'a> Unpin for UnixComponent<'a>
impl<'a> UnwindSafe for UnixComponent<'a>
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more