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.