Struct icu::locid_transform::fallback::LocaleFallbackConfig
source · #[non_exhaustive]pub struct LocaleFallbackConfig {
pub priority: LocaleFallbackPriority,
pub extension_key: Option<Key>,
pub fallback_supplement: Option<LocaleFallbackSupplement>,
}
Expand description
Configuration settings for a particular fallback operation.
Fields (Non-exhaustive)§
This struct is marked as non-exhaustive
Non-exhaustive structs could have additional fields added in future. Therefore, non-exhaustive structs cannot be constructed in external crates using the traditional
Struct { .. }
syntax; cannot be matched against without a wildcard ..
; and struct update syntax will not work.priority: LocaleFallbackPriority
Strategy for choosing which subtags to drop during locale fallback.
§Examples
Retain the language and script subtags until the final step:
use icu::locid::locale;
use icu::locid_transform::fallback::LocaleFallbackConfig;
use icu::locid_transform::fallback::LocaleFallbackPriority;
use icu::locid_transform::LocaleFallbacker;
// Set up the fallback iterator.
let fallbacker = LocaleFallbacker::new();
let mut config = LocaleFallbackConfig::default();
config.priority = LocaleFallbackPriority::Language;
let mut fallback_iterator = fallbacker
.for_config(config)
.fallback_for(locale!("ca-ES-valencia").into());
// Run the algorithm and check the results.
assert_eq!(fallback_iterator.get(), &locale!("ca-ES-valencia").into());
fallback_iterator.step();
assert_eq!(fallback_iterator.get(), &locale!("ca-ES").into());
fallback_iterator.step();
assert_eq!(fallback_iterator.get(), &locale!("ca-valencia").into());
fallback_iterator.step();
assert_eq!(fallback_iterator.get(), &locale!("ca").into());
fallback_iterator.step();
assert_eq!(fallback_iterator.get(), &locale!("und").into());
Retain the region subtag until the final step:
use icu::locid::locale;
use icu::locid_transform::fallback::LocaleFallbackConfig;
use icu::locid_transform::fallback::LocaleFallbackPriority;
use icu::locid_transform::LocaleFallbacker;
// Set up the fallback iterator.
let fallbacker = LocaleFallbacker::new();
let mut config = LocaleFallbackConfig::default();
config.priority = LocaleFallbackPriority::Region;
let mut fallback_iterator = fallbacker
.for_config(config)
.fallback_for(locale!("ca-ES-valencia").into());
// Run the algorithm and check the results.
assert_eq!(fallback_iterator.get(), &locale!("ca-ES-valencia").into());
fallback_iterator.step();
assert_eq!(fallback_iterator.get(), &locale!("ca-ES").into());
fallback_iterator.step();
assert_eq!(fallback_iterator.get(), &locale!("und-ES-valencia").into());
fallback_iterator.step();
assert_eq!(fallback_iterator.get(), &locale!("und-ES").into());
fallback_iterator.step();
assert_eq!(fallback_iterator.get(), &locale!("und").into());
extension_key: Option<Key>
An extension keyword to retain during locale fallback.
§Examples
use icu::locid::locale;
use icu::locid_transform::fallback::LocaleFallbackConfig;
use icu::locid_transform::LocaleFallbacker;
// Set up the fallback iterator.
let fallbacker = LocaleFallbacker::new();
let mut config = LocaleFallbackConfig::default();
config.extension_key = Some(icu::locid::extensions::unicode::key!("nu"));
let mut fallback_iterator = fallbacker
.for_config(config)
.fallback_for(locale!("ar-EG-u-nu-latn").into());
// Run the algorithm and check the results.
assert_eq!(fallback_iterator.get(), &locale!("ar-EG-u-nu-latn").into());
fallback_iterator.step();
assert_eq!(fallback_iterator.get(), &locale!("ar-EG").into());
fallback_iterator.step();
assert_eq!(fallback_iterator.get(), &locale!("ar-u-nu-latn").into());
fallback_iterator.step();
assert_eq!(fallback_iterator.get(), &locale!("ar").into());
fallback_iterator.step();
assert_eq!(fallback_iterator.get(), &locale!("und").into());
fallback_supplement: Option<LocaleFallbackSupplement>
Fallback supplement data key to customize fallback rules.
For example, most data keys for collation add additional parent locales, such as
“yue” to “zh-Hant”, and data used for the "-u-co"
extension keyword fallback.
Currently the only supported fallback supplement is LocaleFallbackSupplement::Collation
, but more may be
added in the future.
§Examples
use icu::locid::locale;
use icu::locid_transform::fallback::LocaleFallbackConfig;
use icu::locid_transform::fallback::LocaleFallbackPriority;
use icu::locid_transform::fallback::LocaleFallbackSupplement;
use icu::locid_transform::LocaleFallbacker;
// Set up the fallback iterator.
let fallbacker = LocaleFallbacker::new();
let mut config = LocaleFallbackConfig::default();
config.priority = LocaleFallbackPriority::Collation;
config.fallback_supplement = Some(LocaleFallbackSupplement::Collation);
let mut fallback_iterator = fallbacker
.for_config(config)
.fallback_for(locale!("yue-HK").into());
// Run the algorithm and check the results.
assert_eq!(fallback_iterator.get(), &locale!("yue-HK").into());
fallback_iterator.step();
assert_eq!(fallback_iterator.get(), &locale!("yue").into());
fallback_iterator.step();
assert_eq!(fallback_iterator.get(), &locale!("zh-Hant").into());
fallback_iterator.step();
assert_eq!(fallback_iterator.get(), &locale!("zh").into());
fallback_iterator.step();
assert_eq!(fallback_iterator.get(), &locale!("und").into());
Implementations§
source§impl LocaleFallbackConfig
impl LocaleFallbackConfig
sourcepub const fn const_default() -> LocaleFallbackConfig
pub const fn const_default() -> LocaleFallbackConfig
Const version of Default::default
.
Trait Implementations§
source§impl Clone for LocaleFallbackConfig
impl Clone for LocaleFallbackConfig
source§fn clone(&self) -> LocaleFallbackConfig
fn clone(&self) -> LocaleFallbackConfig
Returns a copy of the value. Read more
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source
. Read moresource§impl Debug for LocaleFallbackConfig
impl Debug for LocaleFallbackConfig
source§impl Default for LocaleFallbackConfig
impl Default for LocaleFallbackConfig
source§fn default() -> LocaleFallbackConfig
fn default() -> LocaleFallbackConfig
Returns the “default value” for a type. Read more
source§impl PartialEq for LocaleFallbackConfig
impl PartialEq for LocaleFallbackConfig
source§fn eq(&self, other: &LocaleFallbackConfig) -> bool
fn eq(&self, other: &LocaleFallbackConfig) -> bool
This method tests for
self
and other
values to be equal, and is used
by ==
.impl Copy for LocaleFallbackConfig
impl Eq for LocaleFallbackConfig
impl StructuralPartialEq for LocaleFallbackConfig
Auto Trait Implementations§
impl Freeze for LocaleFallbackConfig
impl RefUnwindSafe for LocaleFallbackConfig
impl Send for LocaleFallbackConfig
impl Sync for LocaleFallbackConfig
impl Unpin for LocaleFallbackConfig
impl UnwindSafe for LocaleFallbackConfig
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
Mutably borrows from an owned value. Read more
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>
Converts
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>
Converts
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