#[repr(transparent)]pub struct Language(TinyAsciiStr<3>);
Expand description
A language subtag (examples: "en"
, "csb"
, "zh"
, "und"
, etc.)
Language
represents a Unicode base language code conformant to the
unicode_language_id
field of the Language and Locale Identifier.
§Examples
use icu::locid::subtags::Language;
let language: Language =
"en".parse().expect("Failed to parse a language subtag.");
If the Language
has no value assigned, it serializes to a string "und"
, which
can be then parsed back to an empty Language
field.
§Examples
use icu::locid::subtags::Language;
assert_eq!(Language::default().as_str(), "und");
Notice
: ICU4X uses a narrow form of language subtag of 2-3 characters.
The specification allows language subtag to optionally also be 5-8 characters
but that form has not been used and ICU4X does not support it right now.
Tuple Fields§
§0: TinyAsciiStr<3>
Implementations§
source§impl Language
impl Language
sourcepub const fn try_from_bytes(v: &[u8]) -> Result<Self, ParserError>
pub const fn try_from_bytes(v: &[u8]) -> Result<Self, ParserError>
sourcepub const fn try_from_bytes_manual_slice(
v: &[u8],
start: usize,
end: usize,
) -> Result<Self, ParserError>
pub const fn try_from_bytes_manual_slice( v: &[u8], start: usize, end: usize, ) -> Result<Self, ParserError>
Equivalent to try_from_bytes(bytes[start..end])
,
but callable in a const
context (which range indexing is not).
sourcepub const fn try_from_raw(v: [u8; 3]) -> Result<Self, ParserError>
pub const fn try_from_raw(v: [u8; 3]) -> Result<Self, ParserError>
Safely creates a Language
from its raw format
as returned by Self::into_raw
. Unlike Self::try_from_bytes
,
this constructor only takes normalized values.
sourcepub const unsafe fn from_raw_unchecked(v: [u8; 3]) -> Self
pub const unsafe fn from_raw_unchecked(v: [u8; 3]) -> Self
Unsafely creates a Language
from its raw format
as returned by Self::into_raw
. Unlike Self::try_from_bytes
,
this constructor only takes normalized values.
§Safety
This function is safe iff Self::try_from_raw
returns an Ok
. This is the case
for inputs that are correctly normalized.
sourcepub const fn into_raw(self) -> [u8; 3]
pub const fn into_raw(self) -> [u8; 3]
Deconstructs into a raw format to be consumed by
from_raw_unchecked
or
try_from_raw
.
sourcepub fn strict_cmp(self, other: &[u8]) -> Ordering
pub fn strict_cmp(self, other: &[u8]) -> Ordering
Compare with BCP-47 bytes.
The return value is equivalent to what would happen if you first converted
self
to a BCP-47 string and then performed a byte comparison.
This function is case-sensitive and results in a total order, so it is appropriate for
binary search. The only argument producing Ordering::Equal
is self.as_str().as_bytes()
.
sourcepub fn normalizing_eq(self, other: &str) -> bool
pub fn normalizing_eq(self, other: &str) -> bool
Compare with a potentially unnormalized BCP-47 string.
The return value is equivalent to what would happen if you first parsed the BCP-47 string and then performed a structural comparison.
Trait Implementations§
source§impl Display for Language
impl Display for Language
This trait is implemented for compatibility with fmt!
.
To create a string, [Writeable::write_to_string
] is usually more efficient.
source§impl From<Language> for LanguageIdentifier
impl From<Language> for LanguageIdentifier
§Examples
use icu::locid::{langid, subtags::language, LanguageIdentifier};
assert_eq!(LanguageIdentifier::from(language!("en")), langid!("en"));
source§impl From<Language> for Locale
impl From<Language> for Locale
§Examples
use icu::locid::Locale;
use icu::locid::{locale, subtags::language};
assert_eq!(Locale::from(language!("en")), locale!("en"));
source§impl From<Language> for TinyAsciiStr<3>
impl From<Language> for TinyAsciiStr<3>
source§impl Ord for Language
impl Ord for Language
source§impl PartialEq for Language
impl PartialEq for Language
source§impl PartialOrd for Language
impl PartialOrd for Language
1.0.0 · source§fn le(&self, other: &Rhs) -> bool
fn le(&self, other: &Rhs) -> bool
self
and other
) and is used by the <=
operator. Read moresource§impl ULE for Language
impl ULE for Language
source§fn validate_byte_slice(bytes: &[u8]) -> Result<(), ZeroVecError>
fn validate_byte_slice(bytes: &[u8]) -> Result<(), ZeroVecError>
&[u8]
. Read moresource§fn parse_byte_slice(bytes: &[u8]) -> Result<&[Self], ZeroVecError>
fn parse_byte_slice(bytes: &[u8]) -> Result<&[Self], ZeroVecError>
source§unsafe fn from_byte_slice_unchecked(bytes: &[u8]) -> &[Self]
unsafe fn from_byte_slice_unchecked(bytes: &[u8]) -> &[Self]
&[u8]
, and return it as &[Self]
with the same lifetime, assuming
that this byte slice has previously been run through Self::parse_byte_slice()
with
success. Read moresource§impl Writeable for Language
impl Writeable for Language
source§fn write_to<W: Write + ?Sized>(&self, sink: &mut W) -> Result
fn write_to<W: Write + ?Sized>(&self, sink: &mut W) -> Result
write_to_parts
, and discards any
Part
annotations.source§fn writeable_length_hint(&self) -> LengthHint
fn writeable_length_hint(&self) -> LengthHint
source§fn write_to_string(&self) -> Cow<'_, str>
fn write_to_string(&self) -> Cow<'_, str>
String
with the data from this Writeable
. Like ToString
,
but smaller and faster. Read moresource§fn write_to_parts<S>(&self, sink: &mut S) -> Result<(), Error>where
S: PartsWrite + ?Sized,
fn write_to_parts<S>(&self, sink: &mut S) -> Result<(), Error>where
S: PartsWrite + ?Sized,
Part
annotations to the given sink. Errors from the
sink are bubbled up. The default implementation delegates to write_to
,
and doesn’t produce any Part
annotations.