Struct icu_properties::CodePointMapData
source · pub struct CodePointMapData<T: TrieValue> { /* private fields */ }
Expand description
A wrapper around code point map data.
It is returned by APIs that return Unicode
property data in a map-like form, ex: enumerated property value data keyed
by code point. Access its data via the borrowed version,
CodePointMapDataBorrowed
.
Implementations§
source§impl<T: TrieValue> CodePointMapData<T>
impl<T: TrieValue> CodePointMapData<T>
sourcepub const fn new() -> CodePointMapDataBorrowed<'static, T>where
T: EnumeratedProperty,
pub const fn new() -> CodePointMapDataBorrowed<'static, T>where
T: EnumeratedProperty,
Creates a new CodePointMapData
for a EnumeratedProperty
.
See the documentation on EnumeratedProperty
implementations for details.
✨ Enabled with the compiled_data
Cargo feature.
sourcepub fn try_new_unstable(
provider: &(impl DataProvider<T::DataMarker> + ?Sized),
) -> Result<Self, DataError>where
T: EnumeratedProperty,
pub fn try_new_unstable(
provider: &(impl DataProvider<T::DataMarker> + ?Sized),
) -> Result<Self, DataError>where
T: EnumeratedProperty,
A version of Self::new
that uses custom data provided by a DataProvider
.
sourcepub fn as_borrowed(&self) -> CodePointMapDataBorrowed<'_, T>
pub fn as_borrowed(&self) -> CodePointMapDataBorrowed<'_, T>
Construct a borrowed version of this type that can be queried.
This avoids a potential small underlying cost per API call (like get()
) by consolidating it
up front.
This owned version if returned by functions that use a runtime data provider.
sourcepub fn try_into_converted<P>(self) -> Result<CodePointMapData<P>, UleError>where
P: TrieValue,
pub fn try_into_converted<P>(self) -> Result<CodePointMapData<P>, UleError>where
P: TrieValue,
Convert this map to a map around another type
Typically useful for type-erasing maps into maps around integers.
§Panics
Will panic if T and P are different sizes
§Example
use icu::properties::CodePointMapData;
use icu::properties::props::GeneralCategory;
let data = CodePointMapData::<GeneralCategory>::new().static_to_owned();
let gc = data.try_into_converted::<u8>().unwrap();
let gc = gc.as_borrowed();
assert_eq!(gc.get('木'), GeneralCategory::OtherLetter as u8); // U+6728
assert_eq!(gc.get('🎃'), GeneralCategory::OtherSymbol as u8); // U+1F383 JACK-O-LANTERN
sourcepub fn from_code_point_trie(trie: CodePointTrie<'static, T>) -> Self
pub fn from_code_point_trie(trie: CodePointTrie<'static, T>) -> Self
Construct a new one an owned [CodePointTrie
]
sourcepub fn as_code_point_trie(&self) -> Option<&CodePointTrie<'_, T>>
pub fn as_code_point_trie(&self) -> Option<&CodePointTrie<'_, T>>
Convert this type to a [CodePointTrie
] as a borrowed value.
The data backing this is extensible and supports multiple implementations.
Currently it is always [CodePointTrie
]; however in the future more backends may be
added, and users may select which at data generation time.
This method returns an Option
in order to return None
when the backing data provider
cannot return a [CodePointTrie
], or cannot do so within the expected constant time
constraint.
sourcepub fn to_code_point_trie(&self) -> CodePointTrie<'_, T>
pub fn to_code_point_trie(&self) -> CodePointTrie<'_, T>
Convert this type to a [CodePointTrie
], borrowing if possible,
otherwise allocating a new [CodePointTrie
].
The data backing this is extensible and supports multiple implementations.
Currently it is always [CodePointTrie
]; however in the future more backends may be
added, and users may select which at data generation time.
The performance of the conversion to this specific return type will vary
depending on the data structure that is backing self
.
Trait Implementations§
source§impl<T: Clone + TrieValue> Clone for CodePointMapData<T>
impl<T: Clone + TrieValue> Clone for CodePointMapData<T>
source§fn clone(&self) -> CodePointMapData<T>
fn clone(&self) -> CodePointMapData<T>
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moreAuto Trait Implementations§
impl<T> Freeze for CodePointMapData<T>where
T: Freeze,
impl<T> RefUnwindSafe for CodePointMapData<T>where
T: RefUnwindSafe,
<T as AsULE>::ULE: RefUnwindSafe,
impl<T> Send for CodePointMapData<T>
impl<T> Sync for CodePointMapData<T>
impl<T> Unpin for CodePointMapData<T>
impl<T> UnwindSafe for CodePointMapData<T>
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> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
source§unsafe fn clone_to_uninit(&self, dst: *mut T)
unsafe fn clone_to_uninit(&self, dst: *mut T)
clone_to_uninit
)source§impl<T> IntoEither for T
impl<T> IntoEither for T
source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self
into a Left
variant of Either<Self, Self>
if into_left
is true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moresource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self
into a Left
variant of Either<Self, Self>
if into_left(&self)
returns true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read more