Struct icu::locid::LanguageIdentifier [−][src]
pub struct LanguageIdentifier { pub language: Language, pub script: Option<Script>, pub region: Option<Region>, pub variants: Variants, }
A core struct representing a Unicode BCP47 Language Identifier
.
Examples
use icu::locid::LanguageIdentifier; let li: LanguageIdentifier = "en-US".parse() .expect("Failed to parse."); assert_eq!(li.language, "en"); assert_eq!(li.script, None); assert_eq!(li.region.unwrap(), "US"); assert_eq!(li.variants.len(), 0); assert_eq!(li, "en-US");
Parsing
Unicode recognizes three levels of standard conformance for any language identifier:
- well-formed - syntactically correct
- valid - well-formed and only uses registered language, region, script and variant subtags…
- canonical - valid and no deprecated codes or structure.
At the moment parsing normalizes a well-formed language identifier converting
_
separators to -
and adjusting casing to conform to the Unicode standard.
Any bogus subtags will cause the parsing to fail with an error. No subtag validation is performed.
Examples
use icu::locid::LanguageIdentifier; let li: LanguageIdentifier = "eN_latn_Us-Valencia".parse() .expect("Failed to parse."); assert_eq!(li.language, "en"); assert_eq!(li.script.unwrap(), "Latn"); assert_eq!(li.region.unwrap(), "US"); assert_eq!(li.variants.get(0).unwrap(), "valencia");
Fields
language: Language
Language subtag of the language identifier.
script: Option<Script>
Script subtag of the language identifier.
region: Option<Region>
Region subtag of the language identifier.
variants: Variants
Variant subtags of the language identifier.
Implementations
impl LanguageIdentifier
[src]
impl LanguageIdentifier
[src]pub fn from_bytes(v: &[u8]) -> Result<LanguageIdentifier, ParserError>
[src]
A constructor which takes a utf8 slice, parses it and
produces a well-formed LanguageIdentifier
.
Examples
use icu::locid::LanguageIdentifier; let li = LanguageIdentifier::from_bytes(b"en-US") .expect("Parsing failed."); assert_eq!(li.to_string(), "en-US");
pub fn from_locale_bytes(v: &[u8]) -> Result<LanguageIdentifier, ParserError>
[src]
A constructor which takes a utf8 slice which may contain extension keys,
parses it and produces a well-formed LanguageIdentifier
.
Examples
use icu::locid::LanguageIdentifier; let li = LanguageIdentifier::from_locale_bytes(b"en-US-x-posix") .expect("Parsing failed."); assert_eq!(li.to_string(), "en-US");
This method should be used for input that may be a locale identifier. All extensions will be lost.
pub const fn und() -> LanguageIdentifier
[src]
Returns the default undefined language “und”. Same as default()
, but is const
.
Examples
use icu::locid::LanguageIdentifier; const langid: LanguageIdentifier = LanguageIdentifier::und(); assert_eq!(LanguageIdentifier::default(), langid); assert_eq!("und", langid.to_string());
pub fn canonicalize<S>(input: S) -> Result<String, ParserError> where
S: AsRef<[u8]>,
[src]
S: AsRef<[u8]>,
This is a best-effort operation that performs all available levels of canonicalization.
At the moment the operation will normalize casing and the separator, but in the future it may also validate and update from deprecated subtags to canonical ones.
Examples
use icu::locid::LanguageIdentifier; assert_eq!(LanguageIdentifier::canonicalize("pL_latn_pl"), Ok("pl-Latn-PL".to_string()));
Trait Implementations
impl AsMut<LanguageIdentifier> for Locale
[src]
impl AsMut<LanguageIdentifier> for Locale
[src]pub fn as_mut(&mut self) -> &mut LanguageIdentifier
[src]
impl AsMut<LanguageIdentifier> for LanguageIdentifier
[src]
impl AsMut<LanguageIdentifier> for LanguageIdentifier
[src]pub fn as_mut(&mut self) -> &mut LanguageIdentifier
[src]
impl AsRef<LanguageIdentifier> for Locale
[src]
impl AsRef<LanguageIdentifier> for Locale
[src]pub fn as_ref(&self) -> &LanguageIdentifier
[src]
impl AsRef<LanguageIdentifier> for LanguageIdentifier
[src]
impl AsRef<LanguageIdentifier> for LanguageIdentifier
[src]pub fn as_ref(&self) -> &LanguageIdentifier
[src]
impl Clone for LanguageIdentifier
[src]
impl Clone for LanguageIdentifier
[src]pub fn clone(&self) -> LanguageIdentifier
[src]
pub fn clone_from(&mut self, source: &Self)
1.0.0[src]
impl Debug for LanguageIdentifier
[src]
impl Debug for LanguageIdentifier
[src]impl Default for LanguageIdentifier
[src]
impl Default for LanguageIdentifier
[src]pub fn default() -> LanguageIdentifier
[src]
impl<'de> Deserialize<'de> for LanguageIdentifier
[src]
impl<'de> Deserialize<'de> for LanguageIdentifier
[src]pub fn deserialize<D>(
deserializer: D
) -> Result<LanguageIdentifier, <D as Deserializer<'de>>::Error> where
D: Deserializer<'de>,
[src]
deserializer: D
) -> Result<LanguageIdentifier, <D as Deserializer<'de>>::Error> where
D: Deserializer<'de>,
impl Display for LanguageIdentifier
[src]
impl Display for LanguageIdentifier
[src]impl Eq for LanguageIdentifier
[src]
impl Eq for LanguageIdentifier
[src]impl From<LanguageIdentifier> for Locale
[src]
impl From<LanguageIdentifier> for Locale
[src]pub fn from(id: LanguageIdentifier) -> Locale
[src]
impl From<Locale> for LanguageIdentifier
[src]
impl From<Locale> for LanguageIdentifier
[src]pub fn from(loc: Locale) -> LanguageIdentifier
[src]
impl FromStr for LanguageIdentifier
[src]
impl FromStr for LanguageIdentifier
[src]type Err = ParserError
The associated error which can be returned from parsing.
pub fn from_str(
source: &str
) -> Result<LanguageIdentifier, <LanguageIdentifier as FromStr>::Err>
[src]
source: &str
) -> Result<LanguageIdentifier, <LanguageIdentifier as FromStr>::Err>
impl Hash for LanguageIdentifier
[src]
impl Hash for LanguageIdentifier
[src]impl Ord for LanguageIdentifier
[src]
impl Ord for LanguageIdentifier
[src]impl<'_> PartialEq<&'_ str> for LanguageIdentifier
[src]
impl<'_> PartialEq<&'_ str> for LanguageIdentifier
[src]impl PartialEq<LanguageIdentifier> for LanguageIdentifier
[src]
impl PartialEq<LanguageIdentifier> for LanguageIdentifier
[src]pub fn eq(&self, other: &LanguageIdentifier) -> bool
[src]
pub fn ne(&self, other: &LanguageIdentifier) -> bool
[src]
impl PartialEq<str> for LanguageIdentifier
[src]
impl PartialEq<str> for LanguageIdentifier
[src]impl PartialOrd<LanguageIdentifier> for LanguageIdentifier
[src]
impl PartialOrd<LanguageIdentifier> for LanguageIdentifier
[src]pub fn partial_cmp(&self, other: &LanguageIdentifier) -> Option<Ordering>
[src]
#[must_use]pub fn lt(&self, other: &Rhs) -> bool
1.0.0[src]
#[must_use]pub fn le(&self, other: &Rhs) -> bool
1.0.0[src]
#[must_use]pub fn gt(&self, other: &Rhs) -> bool
1.0.0[src]
#[must_use]pub fn ge(&self, other: &Rhs) -> bool
1.0.0[src]
impl Serialize for LanguageIdentifier
[src]
impl Serialize for LanguageIdentifier
[src]pub fn serialize<S>(
&self,
serializer: S
) -> Result<<S as Serializer>::Ok, <S as Serializer>::Error> where
S: Serializer,
[src]
&self,
serializer: S
) -> Result<<S as Serializer>::Ok, <S as Serializer>::Error> where
S: Serializer,
impl StructuralEq for LanguageIdentifier
[src]
impl StructuralEq for LanguageIdentifier
[src]Auto Trait Implementations
impl RefUnwindSafe for LanguageIdentifier
impl RefUnwindSafe for LanguageIdentifier
impl Send for LanguageIdentifier
impl Send for LanguageIdentifier
impl Sync for LanguageIdentifier
impl Sync for LanguageIdentifier
impl Unpin for LanguageIdentifier
impl Unpin for LanguageIdentifier
impl UnwindSafe for LanguageIdentifier
impl UnwindSafe for LanguageIdentifier
Blanket Implementations
impl<T> DeserializeOwned for T where
T: for<'de> Deserialize<'de>,
[src]
impl<T> DeserializeOwned for T where
T: for<'de> Deserialize<'de>,
[src]impl<'s, T> SerdeSeDataStruct<'s> for T where
T: 's + Serialize + Clone + Debug,
impl<'s, T> SerdeSeDataStruct<'s> for T where
T: 's + Serialize + Clone + Debug,
pub fn clone_into_box(&self) -> Box<dyn SerdeSeDataStruct<'s> + 's, Global>
pub fn as_serialize(&self) -> &dyn Serialize
impl<T> Serialize for T where
T: Serialize + ?Sized,
[src]
impl<T> Serialize for T where
T: Serialize + ?Sized,
[src]pub fn erased_serialize(
&self,
serializer: &mut dyn Serializer
) -> Result<Ok, Error>
[src]
&self,
serializer: &mut dyn Serializer
) -> Result<Ok, Error>