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<'a> Utf8UnixComponent<'a>
impl<'a> Utf8UnixComponent<'a>
sourcepub fn as_path<T>(&self) -> &Utf8Path<T>where
T: for<'enc> Utf8Encoding<'enc>,
pub fn as_path<T>(&self) -> &Utf8Path<T>where
T: for<'enc> Utf8Encoding<'enc>,
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: for<'enc> Utf8Encoding<'enc>,
impl<T> AsRef<Utf8Path<T>> for Utf8UnixComponent<'_>where
T: for<'enc> Utf8Encoding<'enc>,
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§fn clone_from(&mut self, source: &Self)
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);impl<'a> Copy for Utf8UnixComponent<'a>
impl<'a> Eq for Utf8UnixComponent<'a>
impl<'a> StructuralPartialEq for Utf8UnixComponent<'a>
Auto Trait Implementations§
impl<'a> Freeze for Utf8UnixComponent<'a>
impl<'a> RefUnwindSafe for Utf8UnixComponent<'a>
impl<'a> Send for Utf8UnixComponent<'a>
impl<'a> Sync for Utf8UnixComponent<'a>
impl<'a> Unpin for Utf8UnixComponent<'a>
impl<'a> UnwindSafe for Utf8UnixComponent<'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
source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
source§unsafe fn clone_to_uninit(&self, dst: *mut T)
unsafe fn clone_to_uninit(&self, dst: *mut T)
clone_to_uninit)