pub enum Utf8UnixComponent<'a> {
RootDir,
CurDir,
ParentDir,
Normal(&'a str),
}
Expand description
str
slice version of std::path::Component
that represents a Unix-specific component
Variants§
Implementations§
Source§impl<'a> Utf8UnixComponent<'a>
impl<'a> Utf8UnixComponent<'a>
Sourcepub fn from_utf8(component: &UnixComponent<'a>) -> Result<Self, Utf8Error>
pub fn from_utf8(component: &UnixComponent<'a>) -> Result<Self, Utf8Error>
Converts a non-UTF-8 UnixComponent
to a UTF-8 Utf8UnixComponent
by checking that
the component contains valid UTF-8.
§Errors
Returns Err
if the component is not UTF-8 with a description as to why the
provided component is not UTF-8.
§Examples
Basic usage:
use typed_path::{Utf8Component, UnixComponent, Utf8UnixComponent};
// some bytes, in a vector
let component = UnixComponent::Normal(&[240, 159, 146, 150]);
// We know these bytes are valid, so just use `unwrap()`.
let utf8_component = Utf8UnixComponent::from_utf8(&component).unwrap();
assert_eq!("💖", utf8_component.as_str());
Incorrect bytes:
use typed_path::{UnixComponent, Utf8UnixComponent};
// some invalid bytes, in a vector
let component = UnixComponent::Normal(&[0, 159, 146, 150]);
assert!(Utf8UnixComponent::from_utf8(&component).is_err());
See the docs for Utf8Error
for more details on the kinds of
errors that can be returned.
Sourcepub unsafe fn from_utf8_unchecked(component: &UnixComponent<'a>) -> Self
pub unsafe fn from_utf8_unchecked(component: &UnixComponent<'a>) -> Self
Converts a non-UTF-8 UnixComponent
to a UTF-8 Utf8UnixComponent
without checking
that the string contains valid UTF-8.
See the safe version, from_utf8
, for more information.
§Safety
The bytes passed in must be valid UTF-8.
§Examples
Basic usage:
use typed_path::{Utf8Component, UnixComponent, Utf8UnixComponent};
// some bytes, in a vector
let component = UnixComponent::Normal(&[240, 159, 146, 150]);
let utf8_component = unsafe {
Utf8UnixComponent::from_utf8_unchecked(&component)
};
assert_eq!("💖", utf8_component.as_str());
Source§impl Utf8UnixComponent<'_>
impl Utf8UnixComponent<'_>
Sourcepub fn as_path<T>(&self) -> &Utf8Path<T>where
T: Utf8Encoding,
pub fn as_path<T>(&self) -> &Utf8Path<T>where
T: Utf8Encoding,
Returns path representing this specific component
Trait Implementations§
Source§impl AsRef<[u8]> for Utf8UnixComponent<'_>
impl AsRef<[u8]> for Utf8UnixComponent<'_>
Source§impl<T> AsRef<Utf8Path<T>> for Utf8UnixComponent<'_>where
T: Utf8Encoding,
impl<T> AsRef<Utf8Path<T>> for Utf8UnixComponent<'_>where
T: Utf8Encoding,
Source§impl AsRef<str> for Utf8UnixComponent<'_>
impl AsRef<str> for Utf8UnixComponent<'_>
Source§impl<'a> Clone for Utf8UnixComponent<'a>
impl<'a> Clone for Utf8UnixComponent<'a>
Source§fn clone(&self) -> Utf8UnixComponent<'a>
fn clone(&self) -> Utf8UnixComponent<'a>
1.0.0 · Source§const fn clone_from(&mut self, source: &Self)
const fn clone_from(&mut self, source: &Self)
source
. Read moreSource§impl<'a> Debug for Utf8UnixComponent<'a>
impl<'a> Debug for Utf8UnixComponent<'a>
Source§impl Display for Utf8UnixComponent<'_>
impl Display for Utf8UnixComponent<'_>
Source§impl<'a> Hash for Utf8UnixComponent<'a>
impl<'a> Hash for Utf8UnixComponent<'a>
Source§impl<'a> Ord for Utf8UnixComponent<'a>
impl<'a> Ord for Utf8UnixComponent<'a>
Source§fn cmp(&self, other: &Utf8UnixComponent<'a>) -> Ordering
fn cmp(&self, other: &Utf8UnixComponent<'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 Utf8UnixComponent<'a>
impl<'a> PartialEq for Utf8UnixComponent<'a>
Source§impl<'a> PartialOrd for Utf8UnixComponent<'a>
impl<'a> PartialOrd for Utf8UnixComponent<'a>
Source§impl<'a> TryFrom<&'a str> for Utf8UnixComponent<'a>
impl<'a> TryFrom<&'a str> for Utf8UnixComponent<'a>
Source§fn try_from(path: &'a str) -> Result<Self, Self::Error>
fn try_from(path: &'a str) -> Result<Self, Self::Error>
Parses the str
slice into a Utf8UnixComponent
§Examples
use typed_path::Utf8UnixComponent;
use std::convert::TryFrom;
// Supports parsing standard unix path components
assert_eq!(Utf8UnixComponent::try_from("/"), Ok(Utf8UnixComponent::RootDir));
assert_eq!(Utf8UnixComponent::try_from("."), Ok(Utf8UnixComponent::CurDir));
assert_eq!(Utf8UnixComponent::try_from(".."), Ok(Utf8UnixComponent::ParentDir));
assert_eq!(Utf8UnixComponent::try_from("file.txt"), Ok(Utf8UnixComponent::Normal("file.txt")));
assert_eq!(Utf8UnixComponent::try_from("dir/"), Ok(Utf8UnixComponent::Normal("dir")));
// Parsing more than one component will fail
assert!(Utf8UnixComponent::try_from("/file").is_err());
Source§impl<'a> TryFrom<UnixComponent<'a>> for Utf8UnixComponent<'a>
impl<'a> TryFrom<UnixComponent<'a>> for Utf8UnixComponent<'a>
Source§impl<'a> Utf8Component<'a> for Utf8UnixComponent<'a>
impl<'a> Utf8Component<'a> for Utf8UnixComponent<'a>
Source§fn is_root(&self) -> bool
fn is_root(&self) -> bool
Returns true if is the root dir component
§Examples
use typed_path::{Utf8Component, Utf8UnixComponent};
use std::convert::TryFrom;
let root_dir = Utf8UnixComponent::try_from("/").unwrap();
assert!(root_dir.is_root());
let normal = Utf8UnixComponent::try_from("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::{Utf8Component, Utf8UnixComponent};
use std::convert::TryFrom;
let normal = Utf8UnixComponent::try_from("file.txt").unwrap();
assert!(normal.is_normal());
let root_dir = Utf8UnixComponent::try_from("/").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::{Utf8Component, Utf8UnixComponent};
use std::convert::TryFrom;
let parent = Utf8UnixComponent::try_from("..").unwrap();
assert!(parent.is_parent());
let root_dir = Utf8UnixComponent::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::{Utf8Component, Utf8UnixComponent};
use std::convert::TryFrom;
let current = Utf8UnixComponent::try_from(".").unwrap();
assert!(current.is_current());
let root_dir = Utf8UnixComponent::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 characters that are disallowed by the encoding.
§Examples
use typed_path::{Utf8Component, Utf8UnixComponent};
assert!(Utf8UnixComponent::RootDir.is_valid());
assert!(Utf8UnixComponent::ParentDir.is_valid());
assert!(Utf8UnixComponent::CurDir.is_valid());
assert!(Utf8UnixComponent::Normal("abc").is_valid());
assert!(!Utf8UnixComponent::Normal("\0").is_valid());
Source§fn root() -> Self
fn root() -> Self
Returns the root directory component.
§Examples
use typed_path::{Utf8Component, Utf8UnixComponent};
assert_eq!(Utf8UnixComponent::root(), Utf8UnixComponent::RootDir);
Source§fn parent() -> Self
fn parent() -> Self
Returns the parent directory component.
§Examples
use typed_path::{Utf8Component, Utf8UnixComponent};
assert_eq!(Utf8UnixComponent::parent(), Utf8UnixComponent::ParentDir);