Trait Encoding

Source
pub trait Encoding: Sealed {
    type Components<'a>: Components<'a>;

    // Required methods
    fn label() -> &'static str;
    fn components(path: &[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§

Source

type Components<'a>: Components<'a>

Represents the type of component that will be derived by this encoding

Required Methods§

Source

fn label() -> &'static str

Static label representing encoding type

Source

fn components(path: &[u8]) -> Self::Components<'_>

Produces an iterator of Components over the given the byte slice (path)

Source

fn hash<H: Hasher>(path: &[u8], h: &mut H)

Hashes a byte slice (path)

Source

fn push(current_path: &mut Vec<u8>, path: &[u8])

Pushes a byte slice (path) onto the an existing path (current_path)

Source

fn push_checked( current_path: &mut Vec<u8>, path: &[u8], ) -> Result<(), CheckedPathError>

Like Encoding::push, but enforces several new rules:

  1. path cannot contain a prefix component.
  2. path cannot contain a root component.
  3. path cannot contain invalid filename bytes.
  4. path cannot contain parent components such that the current path would be escaped.

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementors§