Skip to main content

Path

Struct Path 

Source
pub struct Path<'a, const MAX_DEPTH: usize> { /* private fields */ }
Expand description

Unix-style path parser and representation.

Handles absolute and relative paths with . and .. navigation. Zero-allocation parsing using string slices.

§Path Syntax

  • Absolute paths: Start with / (e.g., /system/reboot)
  • Relative paths: No leading / (e.g., network/status, ../hw)
  • Parent navigation: .. goes up one level
  • Current directory: . stays at current level

§Memory

Uses MAX_DEPTH const generic to limit nesting depth. All parsing is zero-allocation, working with string slices.

Implementations§

Source§

impl<'a, const MAX_DEPTH: usize> Path<'a, MAX_DEPTH>

Source

pub fn parse(input: &'a str) -> Result<Self, CliError>

Parse path string into Path structure.

Supports absolute (/system/reboot), relative (cmd, ./cmd), and parent (..) paths.

Returns InvalidPath for empty input or PathTooDeep if MAX_DEPTH exceeded.

Source

pub fn is_absolute(&self) -> bool

Returns true if this is an absolute path (starts with /).

Source

pub fn segments(&self) -> &[&'a str]

Get path segments as slice.

Source

pub fn segment_count(&self) -> usize

Returns the number of segments in this path.

Trait Implementations§

Source§

impl<'a, const MAX_DEPTH: usize> Debug for Path<'a, MAX_DEPTH>

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl<'a, const MAX_DEPTH: usize> PartialEq for Path<'a, MAX_DEPTH>

Source§

fn eq(&self, other: &Path<'a, MAX_DEPTH>) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl<'a, const MAX_DEPTH: usize> StructuralPartialEq for Path<'a, MAX_DEPTH>

Auto Trait Implementations§

§

impl<'a, const MAX_DEPTH: usize> Freeze for Path<'a, MAX_DEPTH>

§

impl<'a, const MAX_DEPTH: usize> RefUnwindSafe for Path<'a, MAX_DEPTH>

§

impl<'a, const MAX_DEPTH: usize> Send for Path<'a, MAX_DEPTH>

§

impl<'a, const MAX_DEPTH: usize> Sync for Path<'a, MAX_DEPTH>

§

impl<'a, const MAX_DEPTH: usize> Unpin for Path<'a, MAX_DEPTH>

§

impl<'a, const MAX_DEPTH: usize> UnsafeUnpin for Path<'a, MAX_DEPTH>

§

impl<'a, const MAX_DEPTH: usize> UnwindSafe for Path<'a, MAX_DEPTH>

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.