Struct icu_properties::provider::names::NormalizedPropertyNameStr
source · #[repr(transparent)]pub struct NormalizedPropertyNameStr(UnvalidatedStr);
Expand description
This is a property name that can be “loose matched” as according to PropertyValueAliases.txt
(matched case-insensitively in ASCII, ignoring underscores, whitespace, and hyphens)
This is expected to be ASCII, but we do not rely on this invariant anywhere except during datagen.
The Ord impl will sort things using strict equality, but in such a way that all loose-equal items will sort into the same area, such that a map can be searched for both strict and loose equality.
§Examples
Using a NormalizedPropertyNameStr
as the key of a ZeroMap
:
use icu::properties::provider::names::NormalizedPropertyNameStr;
use zerovec::ZeroMap;
let map: ZeroMap<NormalizedPropertyNameStr, usize> = [
(NormalizedPropertyNameStr::from_str("A_BC"), 11),
(NormalizedPropertyNameStr::from_str("dEf"), 22),
(NormalizedPropertyNameStr::from_str("G_H-I"), 33),
]
.into_iter()
.collect();
let key_approx = NormalizedPropertyNameStr::from_str("AB-C");
let key_exact = NormalizedPropertyNameStr::from_str("A_BC");
// Strict lookup:
assert_eq!(None, map.get_copied(key_approx));
assert_eq!(Some(11), map.get_copied(key_exact));
// Loose lookup:
assert_eq!(Some(11), map.get_copied_by(|u| u.cmp_loose(key_approx)));
assert_eq!(Some(11), map.get_copied_by(|u| u.cmp_loose(key_exact)));
Tuple Fields§
§0: UnvalidatedStr
Implementations§
source§impl NormalizedPropertyNameStr
impl NormalizedPropertyNameStr
sourcepub fn cmp_loose(&self, other: &Self) -> Ordering
pub fn cmp_loose(&self, other: &Self) -> Ordering
Perform the loose comparison as defined in NormalizedPropertyNameStr
.
sourcepub const fn from_str(s: &str) -> &Self
pub const fn from_str(s: &str) -> &Self
Convert a string reference to a NormalizedPropertyNameStr
.
sourcepub const fn cast_ref(value: &UnvalidatedStr) -> &Self
pub const fn cast_ref(value: &UnvalidatedStr) -> &Self
Convert a UnvalidatedStr
reference to a NormalizedPropertyNameStr
reference.
sourcepub const fn cast_box(value: Box<UnvalidatedStr>) -> Box<Self>
pub const fn cast_box(value: Box<UnvalidatedStr>) -> Box<Self>
Convert a UnvalidatedStr
box to a NormalizedPropertyNameStr
box.
sourcepub fn boxed_from_bytes(b: &[u8]) -> Box<Self>
pub fn boxed_from_bytes(b: &[u8]) -> Box<Self>
Get a NormalizedPropertyNameStr
box from a byte slice.
Trait Implementations§
source§impl Debug for NormalizedPropertyNameStr
impl Debug for NormalizedPropertyNameStr
source§impl Ord for NormalizedPropertyNameStr
impl Ord for NormalizedPropertyNameStr
The Ord impl will sort things using strict equality, but in such a way that all loose-equal items will sort into the same area, such that a map can be searched for both strict and loose equality.
source§impl PartialOrd for NormalizedPropertyNameStr
impl PartialOrd for NormalizedPropertyNameStr
The Ord/PartialOrd impl will sort things using strict equality, but in such a way that all loose-equal items will sort into the same area, such that a map can be searched for both strict and loose equality.
source§impl VarULE for NormalizedPropertyNameStr
impl VarULE for NormalizedPropertyNameStr
source§fn validate_byte_slice(bytes: &[u8]) -> Result<(), ZeroVecError>
fn validate_byte_slice(bytes: &[u8]) -> Result<(), ZeroVecError>
&[u8]
. Read moresource§unsafe fn from_byte_slice_unchecked(bytes: &[u8]) -> &Self
unsafe fn from_byte_slice_unchecked(bytes: &[u8]) -> &Self
&[u8]
, and return it as &Self
with the same lifetime, assuming
that this byte slice has previously been run through Self::parse_byte_slice()
with
success. Read moresource§fn parse_byte_slice(bytes: &[u8]) -> Result<&Self, ZeroVecError>
fn parse_byte_slice(bytes: &[u8]) -> Result<&Self, ZeroVecError>
source§fn as_byte_slice(&self) -> &[u8] ⓘ
fn as_byte_slice(&self) -> &[u8] ⓘ
source§impl<'a> ZeroMapKV<'a> for NormalizedPropertyNameStr
impl<'a> ZeroMapKV<'a> for NormalizedPropertyNameStr
source§type Container = VarZeroVec<'a, NormalizedPropertyNameStr>
type Container = VarZeroVec<'a, NormalizedPropertyNameStr>
ZeroVec
or VarZeroVec
.type Slice = VarZeroSlice<NormalizedPropertyNameStr>
source§type GetType = NormalizedPropertyNameStr
type GetType = NormalizedPropertyNameStr
Container::get()
Read moresource§type OwnedType = Box<NormalizedPropertyNameStr>
type OwnedType = Box<NormalizedPropertyNameStr>
Container::replace()
and Container::remove()
,
also used during deserialization. If Self
is human readable serialized,
deserializing to Self::OwnedType
should produce the same value once
passed through Self::owned_as_self()
Read moreimpl Eq for NormalizedPropertyNameStr
impl StructuralPartialEq for NormalizedPropertyNameStr
Auto Trait Implementations§
impl Freeze for NormalizedPropertyNameStr
impl RefUnwindSafe for NormalizedPropertyNameStr
impl Send for NormalizedPropertyNameStr
impl !Sized for NormalizedPropertyNameStr
impl Sync for NormalizedPropertyNameStr
impl Unpin for NormalizedPropertyNameStr
impl UnwindSafe for NormalizedPropertyNameStr
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
source§impl<T> EncodeAsVarULE<T> for T
impl<T> EncodeAsVarULE<T> for T
source§fn encode_var_ule_as_slices<R>(&self, cb: impl FnOnce(&[&[u8]]) -> R) -> R
fn encode_var_ule_as_slices<R>(&self, cb: impl FnOnce(&[&[u8]]) -> R) -> R
cb
with a piecewise list of byte slices that when concatenated
produce the memory pattern of the corresponding instance of T
. Read moresource§fn encode_var_ule_len(&self) -> usize
fn encode_var_ule_len(&self) -> usize
VarULE
typesource§fn encode_var_ule_write(&self, dst: &mut [u8])
fn encode_var_ule_write(&self, dst: &mut [u8])
VarULE
type to the dst
buffer. dst
should
be the size of Self::encode_var_ule_len()