Skip to main content

Language

Struct Language 

Source
pub struct Language { /* private fields */ }
Expand description

A compact, zero-allocation language tag.

Parses the language [-script] [-region] prefix of a BCP 47 language tag.

This type captures only the language + optional script + optional region subtags from a BCP 47 language tag. Parsing is case-insensitive; output is normalized to:

  • language: 2–3 lowercase letters (e.g. ENen)
  • script: 4 titlecase letters (e.g. LATNLatn)
  • region: 2 uppercase letters or 3 digits (e.g. usUS, 419419)

Trailing subtags (variants, extensions, private use) are validated for basic structural conformance but discarded. Extended language subtags (extlang) are not supported and will error.

Implementations§

Source§

impl Language

Source

pub const MAX_LEN: usize = 12

The maximum length of the canonical language[-Script][-REGION] form.

Source

pub const UND: Language

The “undefined” language (und).

Source

pub fn parse(s: &str) -> Result<Language, ParseLanguageError>

Parses a language tag, keeping only language/script/region.

Source

pub fn parse_prefix(s: &str) -> Result<(Language, &str), ParseLanguageError>

Parses the language[-Script][-REGION] prefix of a tag, returning the remainder.

The remainder starts at the first unconsumed subtag (without a leading -/_). This can be used to inspect or process variants, extensions, or private-use subtags without forcing this type to model them.

use parlance::Language;

let (lang, rest) = Language::parse_prefix("tr-Latin-TR").unwrap();
assert_eq!(lang.as_str(), "tr");
assert_eq!(rest, "Latin-TR");
Source

pub fn as_str(&self) -> &str

Returns the canonical string form (language[-Script][-REGION]).

Source

pub fn language(&self) -> &str

Returns the primary language subtag (lowercase).

Source

pub fn script(&self) -> Option<&str>

Returns the script subtag (titlecase), if present.

Source

pub fn region(&self) -> Option<&str>

Returns the region subtag (uppercase or digits), if present.

Trait Implementations§

Source§

impl Clone for Language

Source§

fn clone(&self) -> Language

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for Language

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
Source§

impl Display for Language

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
Source§

impl FromStr for Language

Source§

type Err = ParseLanguageError

The associated error which can be returned from parsing.
Source§

fn from_str(s: &str) -> Result<Language, <Language as FromStr>::Err>

Parses a string s to return a value of this type. Read more
Source§

impl Hash for Language

Source§

fn hash<__H>(&self, state: &mut __H)
where __H: Hasher,

Feeds this value into the given Hasher. Read more
1.3.0 · Source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
Source§

impl PartialEq for Language

Source§

fn eq(&self, other: &Language) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl Copy for Language

Source§

impl Eq for Language

Source§

impl StructuralPartialEq for Language

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

Source§

fn equivalent(&self, key: &K) -> bool

Checks if this value is equivalent to the given key. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T> ToString for T
where T: Display + ?Sized,

Source§

fn to_string(&self) -> String

Converts the given value to a String. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.