Struct icu_collator::CollatorOptions
source · #[non_exhaustive]pub struct CollatorOptions {
pub strength: Option<Strength>,
pub alternate_handling: Option<AlternateHandling>,
pub case_first: Option<CaseFirst>,
pub max_variable: Option<MaxVariable>,
pub case_level: Option<CaseLevel>,
pub numeric: Option<Numeric>,
pub backward_second_level: Option<BackwardSecondLevel>,
}
Expand description
Options settable by the user of the API.
With the exception of reordering (BCP47 kr
), options that can by implied by locale are
also settable via CollatorOptions
.
See the spec.
The setters take an Option
so that None
can be used to go back to default.
§Options
Examples for using the different options below can be found in the crate-level docs.
§ECMA-402 Sensitivity
ECMA-402 sensitivity
maps to a combination of Strength
and CaseLevel
as follows:
sensitivity: "base"
Strength::Primary
sensitivity: "accent"
Strength::Secondary
sensitivity: "case"
Strength::Primary
andCaseLevel::On
sensitivity: "variant"
Strength::Tertiary
§Strength
This is the BCP47 key ks
. The default is Strength::Tertiary
.
§Alternate Handling
This is the BCP47 key ka
. Note that AlternateHandling::ShiftTrimmed
and
AlternateHandling::Blanked
are unimplemented. The default is
AlternateHandling::NonIgnorable
, except
for Thai, whose default is AlternateHandling::Shifted
.
§Case Level
See the spec.
This is the BCP47 key kc
. The default is CaseLevel::Off
.
§Case First
See the spec.
This is the BCP47 key kf
. Three possibilities: CaseFirst::Off
(default,
except for Danish and Maltese), CaseFirst::LowerFirst
, and CaseFirst::UpperFirst
(default for Danish and Maltese).
§Backward second level
Compare the second level in backward order. This is the BCP47 key kb
. kb
is prohibited by ECMA-402. The default is BackwardSecondLevel::Off
, except
for Canadian French.
§Numeric
This is the BCP47 key kn
. When set to Numeric::On
, any sequence of decimal
digits (General_Category = Nd) is sorted at the primary level according to the
numeric value. The default is Numeric::Off
.
§Unsupported BCP47 options
Reordering (BCP47 kr
) currently cannot be set via the API and is implied
by the locale of the collation. kr
is prohibited by ECMA-402.
Normalization is always enabled and cannot be turned off. Therefore, there
is no option corresponding to BCP47 kk
. kk
is prohibited by ECMA-402.
Hiragana quaternary handling is part of the strength for the Japanese
tailoring. The BCP47 key kh
is unsupported. kh
is deprecated and
prohibited by ECMA-402.
Variable top (BCP47 vt
) is unsupported (use Max Variable instead). vt
is deprecated and prohibited by ECMA-402.
§ECMA-402 Usage
ECMA-402 usage: "search"
is represented as -u-co-search
as part of the
locale in ICU4X. However, neither ECMA-402 nor ICU4X provides prefix matching
or substring matching API surface. This makes the utility of search collations
very narrow: With -u-co-search
, Strength::Primary
, and observing whether
comparison output is core::cmp::Ordering::Equal
(making no distinction between
core::cmp::Ordering::Less
and core::cmp::Ordering::Greater
), it is
possible to check if a set of human-readable strings contains a full-string
fuzzy match of a user-entered string, where “fuzzy” means case-insensitive and
accent-insensitive for scripts that have such concepts and something roughly
similar for other scripts.
Due to the very limited utility, ICU4X data does not include search collations by default.
Fields (Non-exhaustive)§
This struct is marked as non-exhaustive
Struct { .. }
syntax; cannot be matched against without a wildcard ..
; and struct update syntax will not work.strength: Option<Strength>
User-specified strength collation option.
alternate_handling: Option<AlternateHandling>
User-specified alternate handling collation option.
case_first: Option<CaseFirst>
User-specified case first collation option.
max_variable: Option<MaxVariable>
User-specified max variable collation option.
case_level: Option<CaseLevel>
User-specified case level collation option.
numeric: Option<Numeric>
User-specified numeric collation option.
backward_second_level: Option<BackwardSecondLevel>
User-specified backward second level collation option.
Implementations§
Trait Implementations§
source§impl Clone for CollatorOptions
impl Clone for CollatorOptions
source§fn clone(&self) -> CollatorOptions
fn clone(&self) -> CollatorOptions
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moresource§impl Debug for CollatorOptions
impl Debug for CollatorOptions
source§impl Default for CollatorOptions
impl Default for CollatorOptions
source§fn default() -> CollatorOptions
fn default() -> CollatorOptions
source§impl From<ResolvedCollatorOptions> for CollatorOptions
impl From<ResolvedCollatorOptions> for CollatorOptions
source§fn from(options: ResolvedCollatorOptions) -> CollatorOptions
fn from(options: ResolvedCollatorOptions) -> CollatorOptions
Convenience conversion for copying the options from an existing collator into a new one (overriding any locale-provided defaults of the new one!).
impl Copy for CollatorOptions
Auto Trait Implementations§
impl Freeze for CollatorOptions
impl RefUnwindSafe for CollatorOptions
impl Send for CollatorOptions
impl Sync for CollatorOptions
impl Unpin for CollatorOptions
impl UnwindSafe for CollatorOptions
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