pub trait BytesExt {
// Required method
fn matches_special_lowercase<B: AsRef<[u8]>>(self, other: B) -> bool;
}Expand description
Extended functionality for
&[u8].
Required Methods§
Sourcefn matches_special_lowercase<B: AsRef<[u8]>>(self, other: B) -> bool
fn matches_special_lowercase<B: AsRef<[u8]>>(self, other: B) -> bool
Returns whether self matches case-insensitively to other, which only
contains ASCII characters with the 0b100000 (lowercase) bit set.
This method can often be used in place of
eq_ignore_ascii_case
and is more performant since this uses a simple bitwise OR instead of a
lookup table. The main restriction is that only the following ASCII
characters may be in other:
| Type | Values |
|---|---|
| Alphanumeric | a-z, 0-9 |
| Punctuation | !, ?, ., ,, :, ;, ', `, \, /, #, $, &, |, ~ |
| Brackets | <, >, (, ), {, } |
| Math | +, -, *, %, = |
| Non-Graphical | SPACE, DELETE |
§Examples
This method can be used to match against filesystem paths:
use oceanpkg_shared::ext::BytesExt;
let lower = b"../hello.txt";
let upper = b"../HELLO.TXT";
assert!(upper.matches_special_lowercase(lower));
assert!(lower.matches_special_lowercase(lower));
assert!(!lower.matches_special_lowercase(upper));
assert!(!upper.matches_special_lowercase(upper));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.