pub trait Utf8Encoding: Sealed {
type Components<'a>: Utf8Components<'a>;
// Required methods
fn label() -> &'static str;
fn components(path: &str) -> Self::Components<'_>;
fn hash<H: Hasher>(path: &str, h: &mut H);
fn push(current_path: &mut String, path: &str);
fn push_checked(
current_path: &mut String,
path: &str,
) -> Result<(), CheckedPathError>;
}
Expand description
Interface to provide meaning to a byte slice such that paths can be derived
Required Associated Types§
Sourcetype Components<'a>: Utf8Components<'a>
type Components<'a>: Utf8Components<'a>
Represents the type of component that will be derived by this encoding
Required Methods§
Sourcefn components(path: &str) -> Self::Components<'_>
fn components(path: &str) -> Self::Components<'_>
Produces an iterator of Utf8Component
s over the given the byte slice (path
)
Sourcefn push(current_path: &mut String, path: &str)
fn push(current_path: &mut String, path: &str)
Pushes a utf8 str (path
) onto the an existing path (current_path
)
Sourcefn push_checked(
current_path: &mut String,
path: &str,
) -> Result<(), CheckedPathError>
fn push_checked( current_path: &mut String, path: &str, ) -> Result<(), CheckedPathError>
Like Utf8Encoding::push
, but enforces several new rules:
path
cannot contain a prefix component.path
cannot contain a root component.path
cannot contain invalid filename characters.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.