pub struct LocaleDirectionality<Expander = LocaleExpander> { /* private fields */ }Expand description
Provides methods to determine the direction of a locale.
The Expander generic parameter wraps a LocaleExpander.
§Examples
use icu::locale::{langid, Direction, LocaleDirectionality};
let ld = LocaleDirectionality::new_common();
assert_eq!(ld.get(&langid!("en")), Some(Direction::LeftToRight));Implementations§
Source§impl LocaleDirectionality
 
impl LocaleDirectionality
Sourcepub const fn new_common() -> LocaleDirectionality
 
pub const fn new_common() -> LocaleDirectionality
Creates a LocaleDirectionality from compiled data, using LocaleExpander
data for common locales.
This includes limited likely subtags data, see LocaleExpander::new_common().
Sourcepub fn try_new_common_with_buffer_provider(
    provider: &(impl BufferProvider + ?Sized),
) -> Result<LocaleDirectionality, DataError>
 
pub fn try_new_common_with_buffer_provider( provider: &(impl BufferProvider + ?Sized), ) -> Result<LocaleDirectionality, DataError>
A version of Self::new_common that uses custom data provided by a BufferProvider.
✨ Enabled with the serde feature.
Sourcepub fn try_new_common_unstable<P>(
    provider: &P,
) -> Result<LocaleDirectionality, DataError>
 
pub fn try_new_common_unstable<P>( provider: &P, ) -> Result<LocaleDirectionality, DataError>
A version of Self::new_common that uses custom data provided by a DataProvider.
Sourcepub const fn new_extended() -> LocaleDirectionality
 
pub const fn new_extended() -> LocaleDirectionality
Creates a LocaleDirectionality from compiled data, using LocaleExpander
data for all locales.
This includes all likely subtags data, see LocaleExpander::new_extended().
Sourcepub fn try_new_extended_with_buffer_provider(
    provider: &(impl BufferProvider + ?Sized),
) -> Result<LocaleDirectionality, DataError>
 
pub fn try_new_extended_with_buffer_provider( provider: &(impl BufferProvider + ?Sized), ) -> Result<LocaleDirectionality, DataError>
A version of Self::new_extended that uses custom data provided by a BufferProvider.
✨ Enabled with the serde feature.
Sourcepub fn try_new_extended_unstable<P>(
    provider: &P,
) -> Result<LocaleDirectionality, DataError>
 
pub fn try_new_extended_unstable<P>( provider: &P, ) -> Result<LocaleDirectionality, DataError>
A version of Self::new_extended that uses custom data provided by a DataProvider.
Source§impl<Expander> LocaleDirectionality<Expander>where
    Expander: AsRef<LocaleExpander>,
 
impl<Expander> LocaleDirectionality<Expander>where
    Expander: AsRef<LocaleExpander>,
Sourcepub const fn new_with_expander(
    expander: Expander,
) -> LocaleDirectionality<Expander>
 
pub const fn new_with_expander( expander: Expander, ) -> LocaleDirectionality<Expander>
Creates a LocaleDirectionality with a custom LocaleExpander and compiled data.
This allows using LocaleExpander::new_extended() with data for all locales.
§Examples
use icu::locale::{
    langid, Direction, LocaleDirectionality, LocaleExpander,
};
let ld_default = LocaleDirectionality::new_common();
assert_eq!(ld_default.get(&langid!("jbn")), None);
let expander = LocaleExpander::new_extended();
let ld_extended = LocaleDirectionality::new_with_expander(expander);
assert_eq!(
    ld_extended.get(&langid!("jbn")),
    Some(Direction::RightToLeft)
);Sourcepub fn try_new_with_expander_unstable<P>(
    provider: &P,
    expander: Expander,
) -> Result<LocaleDirectionality<Expander>, DataError>
 
pub fn try_new_with_expander_unstable<P>( provider: &P, expander: Expander, ) -> Result<LocaleDirectionality<Expander>, DataError>
A version of Self::new_with_expander that uses custom data provided by a DataProvider.
Sourcepub fn get(&self, langid: &LanguageIdentifier) -> Option<Direction>
 
pub fn get(&self, langid: &LanguageIdentifier) -> Option<Direction>
Returns the script direction of the given locale.
Note that the direction is a property of the script of a locale, not of the language. As such,
when given a locale without an associated script tag (i.e., locale!("en") vs. locale!("en-Latn")),
this method first tries to infer the script using the language and region before returning its direction.
If you already have a script struct and want to get its direction, you should use
Locale::from(Some(my_script)) and call this method.
This method will return None if either a locale’s script cannot be determined, or there is no information
for the script.
§Examples
Using an existing locale:
use icu::locale::{langid, Direction, LocaleDirectionality};
let ld = LocaleDirectionality::new_common();
assert_eq!(ld.get(&langid!("en-US")), Some(Direction::LeftToRight));
assert_eq!(ld.get(&langid!("ar")), Some(Direction::RightToLeft));
assert_eq!(ld.get(&langid!("en-Arab")), Some(Direction::RightToLeft));
assert_eq!(ld.get(&langid!("foo")), None);Using a script directly:
use icu::locale::subtags::script;
use icu::locale::{Direction, LanguageIdentifier, LocaleDirectionality};
let ld = LocaleDirectionality::new_common();
assert_eq!(
    ld.get(&LanguageIdentifier::from(Some(script!("Latn")))),
    Some(Direction::LeftToRight)
);Sourcepub fn is_right_to_left(&self, langid: &LanguageIdentifier) -> bool
 
pub fn is_right_to_left(&self, langid: &LanguageIdentifier) -> bool
Returns whether the given locale is right-to-left.
Note that if this method returns false, the locale is either left-to-right or
the LocaleDirectionality does not include data for the locale.
You should use LocaleDirectionality::get if you need to differentiate between these cases.
See LocaleDirectionality::get for more information.
Sourcepub fn is_left_to_right(&self, langid: &LanguageIdentifier) -> bool
 
pub fn is_left_to_right(&self, langid: &LanguageIdentifier) -> bool
Returns whether the given locale is left-to-right.
Note that if this method returns false, the locale is either right-to-left or
the LocaleDirectionality does not include data for the locale.
You should use LocaleDirectionality::get if you need to differentiate between these cases.
See LocaleDirectionality::get for more information.
Trait Implementations§
Auto Trait Implementations§
impl<Expander> Freeze for LocaleDirectionality<Expander>where
    Expander: Freeze,
impl<Expander> RefUnwindSafe for LocaleDirectionality<Expander>where
    Expander: RefUnwindSafe,
impl<Expander = LocaleExpander> !Send for LocaleDirectionality<Expander>
impl<Expander = LocaleExpander> !Sync for LocaleDirectionality<Expander>
impl<Expander> Unpin for LocaleDirectionality<Expander>where
    Expander: Unpin,
impl<Expander> UnwindSafe for LocaleDirectionality<Expander>where
    Expander: UnwindSafe,
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> 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