pub struct LocaleDirectionality { /* private fields */ }Expand description
Provides methods to determine the direction of a locale.
§Examples
use icu::locid::locale;
use icu::locid_transform::{Direction, LocaleDirectionality};
let ld = LocaleDirectionality::new();
assert_eq!(ld.get(&locale!("en")), Some(Direction::LeftToRight));Implementations§
Source§impl LocaleDirectionality
impl LocaleDirectionality
Sourcepub const fn new() -> Self
pub const fn new() -> Self
Creates a LocaleDirectionality from compiled data.
This includes limited likely subtags data, see LocaleExpander::new().
Sourcepub fn try_new_with_any_provider(
provider: &(impl AnyProvider + ?Sized),
) -> Result<LocaleDirectionality, LocaleTransformError>
pub fn try_new_with_any_provider( provider: &(impl AnyProvider + ?Sized), ) -> Result<LocaleDirectionality, LocaleTransformError>
A version of Self::new that uses custom data provided by an AnyProvider.
Sourcepub fn try_new_unstable<P>(
provider: &P,
) -> Result<LocaleDirectionality, LocaleTransformError>
pub fn try_new_unstable<P>( provider: &P, ) -> Result<LocaleDirectionality, LocaleTransformError>
A version of Self::new that uses custom data provided by a DataProvider.
Sourcepub const fn new_with_expander(expander: LocaleExpander) -> Self
pub const fn new_with_expander(expander: LocaleExpander) -> Self
Creates a LocaleDirectionality with a custom LocaleExpander and compiled data.
This allows using LocaleExpander::new_extended() with data for all locales.
§Examples
use icu::locid::locale;
use icu::locid_transform::{
Direction, LocaleDirectionality, LocaleExpander,
};
let ld_default = LocaleDirectionality::new();
assert_eq!(ld_default.get(&locale!("jbn")), None);
let expander = LocaleExpander::new_extended();
let ld_extended = LocaleDirectionality::new_with_expander(expander);
assert_eq!(
ld_extended.get(&locale!("jbn")),
Some(Direction::RightToLeft)
);Sourcepub fn try_new_with_expander_unstable<P>(
provider: &P,
expander: LocaleExpander,
) -> Result<LocaleDirectionality, LocaleTransformError>
pub fn try_new_with_expander_unstable<P>( provider: &P, expander: LocaleExpander, ) -> Result<LocaleDirectionality, LocaleTransformError>
A version of Self::new_with_expander that uses custom data provided by a DataProvider.
Sourcepub fn get(&self, locale: impl AsRef<LanguageIdentifier>) -> Option<Direction>
pub fn get(&self, locale: impl AsRef<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::locid::locale;
use icu::locid_transform::{Direction, LocaleDirectionality};
let ld = LocaleDirectionality::new();
assert_eq!(ld.get(&locale!("en-US")), Some(Direction::LeftToRight));
assert_eq!(ld.get(&locale!("ar")), Some(Direction::RightToLeft));
assert_eq!(ld.get(&locale!("en-Arab")), Some(Direction::RightToLeft));
assert_eq!(ld.get(&locale!("foo")), None);Using a script directly:
use icu::locid::subtags::script;
use icu::locid::Locale;
use icu::locid_transform::{Direction, LocaleDirectionality};
let ld = LocaleDirectionality::new();
assert_eq!(
ld.get(&Locale::from(Some(script!("Latn")))),
Some(Direction::LeftToRight)
);Sourcepub fn is_right_to_left(&self, locale: impl AsRef<LanguageIdentifier>) -> bool
pub fn is_right_to_left(&self, locale: impl AsRef<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, locale: impl AsRef<LanguageIdentifier>) -> bool
pub fn is_left_to_right(&self, locale: impl AsRef<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§
Source§impl Debug for LocaleDirectionality
impl Debug for LocaleDirectionality
Auto Trait Implementations§
impl Freeze for LocaleDirectionality
impl RefUnwindSafe for LocaleDirectionality
impl !Send for LocaleDirectionality
impl !Sync for LocaleDirectionality
impl Unpin for LocaleDirectionality
impl UnwindSafe for LocaleDirectionality
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
impl<T> ErasedDestructor for Twhere
T: 'static,
impl<T> MaybeSendSync for T
Layout§
Note: Most layout information is completely unstable and may even differ between compilations. The only exception is types with certain repr(...) attributes. Please see the Rust Reference's “Type Layout” chapter for details on type layout guarantees.
Size: 680 bytes