Trait typed_path::Encoding
source · pub trait Encoding<'a>: Sealed {
type Components: Components<'a>;
// Required methods
fn label() -> &'static str;
fn components(path: &'a [u8]) -> Self::Components;
fn hash<H: Hasher>(path: &[u8], h: &mut H);
fn push(current_path: &mut Vec<u8>, path: &[u8]);
fn push_checked(
current_path: &mut Vec<u8>,
path: &[u8],
) -> Result<(), CheckedPathError>;
}
Expand description
Interface to provide meaning to a byte slice such that paths can be derived
Required Associated Types§
sourcetype Components: Components<'a>
type Components: Components<'a>
Represents the type of component that will be derived by this encoding
Required Methods§
sourcefn components(path: &'a [u8]) -> Self::Components
fn components(path: &'a [u8]) -> Self::Components
Produces an iterator of Component
s over the given the byte slice (path
)
sourcefn push(current_path: &mut Vec<u8>, path: &[u8])
fn push(current_path: &mut Vec<u8>, path: &[u8])
Pushes a byte slice (path
) onto the an existing path (current_path
)
sourcefn push_checked(
current_path: &mut Vec<u8>,
path: &[u8],
) -> Result<(), CheckedPathError>
fn push_checked( current_path: &mut Vec<u8>, path: &[u8], ) -> Result<(), CheckedPathError>
Like Encoding::push
, but enforces several new rules:
path
cannot contain a prefix component.path
cannot contain a root component.path
cannot contain invalid filename bytes.path
cannot contain parent components such that the current path would be escaped.
Object Safety§
This trait is not object safe.