pub struct Value(/* private fields */);Expand description
A value used in a list of Keywords.
The value has to be a sequence of one or more alphanumerical strings
separated by -.
Each part of the sequence has to be no shorter than three characters and no
longer than 8.
§Examples
use icu::locale::extensions::unicode::{value, Value};
use writeable::assert_writeable_eq;
assert_writeable_eq!(value!("gregory"), "gregory");
assert_writeable_eq!(
    "islamic-civil".parse::<Value>().unwrap(),
    "islamic-civil"
);
// The value "true" has the special, empty string representation
assert_eq!(value!("true").to_string(), "");Implementations§
Source§impl Value
 
impl Value
Sourcepub fn try_from_str(s: &str) -> Result<Value, ParseError>
 
pub fn try_from_str(s: &str) -> Result<Value, ParseError>
Sourcepub fn try_from_utf8(code_units: &[u8]) -> Result<Value, ParseError>
 
pub fn try_from_utf8(code_units: &[u8]) -> Result<Value, ParseError>
Sourcepub const fn as_single_subtag(&self) -> Option<&Subtag>
 
pub const fn as_single_subtag(&self) -> Option<&Subtag>
Returns a reference to a single Subtag if the Value contains exactly one
subtag, or None otherwise.
§Examples
use core::str::FromStr;
use icu::locale::extensions::unicode::Value;
let value1 = Value::from_str("foo").expect("failed to parse a Value");
let value2 = Value::from_str("foo-bar").expect("failed to parse a Value");
assert!(value1.as_single_subtag().is_some());
assert!(value2.as_single_subtag().is_none());Sourcepub fn into_single_subtag(self) -> Option<Subtag>
 
pub fn into_single_subtag(self) -> Option<Subtag>
Destructs into a single Subtag if the Value contains exactly one
subtag, or returns None otherwise.
§Examples
use core::str::FromStr;
use icu::locale::extensions::unicode::Value;
let value1 = Value::from_str("foo").expect("failed to parse a Value");
let value2 = Value::from_str("foo-bar").expect("failed to parse a Value");
assert!(value1.into_single_subtag().is_some());
assert!(value2.into_single_subtag().is_none());Sourcepub fn push_subtag(&mut self, subtag: Subtag)
 
pub fn push_subtag(&mut self, subtag: Subtag)
Sourcepub fn subtag_count(&self) -> usize
 
pub fn subtag_count(&self) -> usize
Sourcepub fn is_empty(&self) -> bool
 
pub fn is_empty(&self) -> bool
Returns true if the Value has no subtags.
§Examples
use icu::locale::{extensions::unicode::Value, subtags::subtag};
let mut v = Value::default();
assert_eq!(v.is_empty(), true);Sourcepub fn remove_subtag(&mut self, idx: usize) -> Option<Subtag>
 
pub fn remove_subtag(&mut self, idx: usize) -> Option<Subtag>
Removes and returns the subtag at position index within the value,
shifting all subtags after it to the left.
§Examples
use icu::locale::{extensions::unicode::Value, subtags::subtag};
let mut v = Value::default();
v.push_subtag(subtag!("foo"));
v.push_subtag(subtag!("bar"));
v.push_subtag(subtag!("baz"));
assert_eq!(v.remove_subtag(1), Some(subtag!("bar")));
assert_eq!(v, "foo-baz");Sourcepub fn get_subtag(&self, idx: usize) -> Option<&Subtag>
 
pub fn get_subtag(&self, idx: usize) -> Option<&Subtag>
Returns a reference to a subtag at index.
§Examples
use icu::locale::{extensions::unicode::Value, subtags::subtag};
let mut v = Value::default();
v.push_subtag(subtag!("foo"));
v.push_subtag(subtag!("bar"));
v.push_subtag(subtag!("baz"));
assert_eq!(v.get_subtag(1), Some(&subtag!("bar")));
assert_eq!(v.get_subtag(3), None);Sourcepub fn from_vec_unchecked(input: Vec<Subtag>) -> Value
 
pub fn from_vec_unchecked(input: Vec<Subtag>) -> Value
A constructor which takes a pre-sorted list of Value elements.
§Examples
use icu::locale::extensions::unicode::Value;
use icu::locale::subtags::subtag;
let subtag1 = subtag!("foobar");
let subtag2 = subtag!("testing");
let mut v = vec![subtag1, subtag2];
v.sort();
v.dedup();
let value = Value::from_vec_unchecked(v);Notice: For performance- and memory-constrained environments, it is recommended
for the caller to use binary_search instead of sort
and dedup.
Trait Implementations§
Source§impl Display for Value
This trait is implemented for compatibility with fmt!.
To create a string, [Writeable::write_to_string] is usually more efficient.
 
impl Display for Value
This trait is implemented for compatibility with fmt!.
To create a string, [Writeable::write_to_string] is usually more efficient.
Source§impl Extend<Subtag> for Value
 
impl Extend<Subtag> for Value
Source§fn extend<T>(&mut self, iter: T)where
    T: IntoIterator<Item = Subtag>,
 
fn extend<T>(&mut self, iter: T)where
    T: IntoIterator<Item = Subtag>,
Source§fn extend_one(&mut self, item: A)
 
fn extend_one(&mut self, item: A)
extend_one)Source§fn extend_reserve(&mut self, additional: usize)
 
fn extend_reserve(&mut self, additional: usize)
extend_one)Source§impl From<CalendarAlgorithm> for Value
 
impl From<CalendarAlgorithm> for Value
Source§fn from(input: CalendarAlgorithm) -> Value
 
fn from(input: CalendarAlgorithm) -> Value
Source§impl From<CollationCaseFirst> for Value
 
impl From<CollationCaseFirst> for Value
Source§fn from(input: CollationCaseFirst) -> Value
 
fn from(input: CollationCaseFirst) -> Value
Source§impl From<CollationNumericOrdering> for Value
 
impl From<CollationNumericOrdering> for Value
Source§fn from(input: CollationNumericOrdering) -> Value
 
fn from(input: CollationNumericOrdering) -> Value
Source§impl From<CollationType> for Value
 
impl From<CollationType> for Value
Source§fn from(input: CollationType) -> Value
 
fn from(input: CollationType) -> Value
Source§impl From<CommonVariantType> for Value
 
impl From<CommonVariantType> for Value
Source§fn from(input: CommonVariantType) -> Value
 
fn from(input: CommonVariantType) -> Value
Source§impl From<CurrencyFormatStyle> for Value
 
impl From<CurrencyFormatStyle> for Value
Source§fn from(input: CurrencyFormatStyle) -> Value
 
fn from(input: CurrencyFormatStyle) -> Value
Source§impl From<CurrencyType> for Value
 
impl From<CurrencyType> for Value
Source§fn from(input: CurrencyType) -> Value
 
fn from(input: CurrencyType) -> Value
Source§impl From<DictionaryBreakScriptExclusions> for Value
 
impl From<DictionaryBreakScriptExclusions> for Value
Source§fn from(input: DictionaryBreakScriptExclusions) -> Value
 
fn from(input: DictionaryBreakScriptExclusions) -> Value
Source§impl From<EmojiPresentationStyle> for Value
 
impl From<EmojiPresentationStyle> for Value
Source§fn from(input: EmojiPresentationStyle) -> Value
 
fn from(input: EmojiPresentationStyle) -> Value
Source§impl From<LineBreakStyle> for Value
 
impl From<LineBreakStyle> for Value
Source§fn from(input: LineBreakStyle) -> Value
 
fn from(input: LineBreakStyle) -> Value
Source§impl From<LineBreakWordHandling> for Value
 
impl From<LineBreakWordHandling> for Value
Source§fn from(input: LineBreakWordHandling) -> Value
 
fn from(input: LineBreakWordHandling) -> Value
Source§impl From<MeasurementSystem> for Value
 
impl From<MeasurementSystem> for Value
Source§fn from(input: MeasurementSystem) -> Value
 
fn from(input: MeasurementSystem) -> Value
Source§impl From<MeasurementUnitOverride> for Value
 
impl From<MeasurementUnitOverride> for Value
Source§fn from(input: MeasurementUnitOverride) -> Value
 
fn from(input: MeasurementUnitOverride) -> Value
Source§impl From<NumberingSystem> for Value
 
impl From<NumberingSystem> for Value
Source§fn from(input: NumberingSystem) -> Value
 
fn from(input: NumberingSystem) -> Value
Source§impl From<RegionOverride> for Value
 
impl From<RegionOverride> for Value
Source§fn from(input: RegionOverride) -> Value
 
fn from(input: RegionOverride) -> Value
Source§impl From<RegionalSubdivision> for Value
 
impl From<RegionalSubdivision> for Value
Source§fn from(input: RegionalSubdivision) -> Value
 
fn from(input: RegionalSubdivision) -> Value
Source§impl From<SentenceBreakSupressions> for Value
 
impl From<SentenceBreakSupressions> for Value
Source§fn from(input: SentenceBreakSupressions) -> Value
 
fn from(input: SentenceBreakSupressions) -> Value
Source§impl From<TimeZoneShortId> for Value
 
impl From<TimeZoneShortId> for Value
Source§fn from(input: TimeZoneShortId) -> Value
 
fn from(input: TimeZoneShortId) -> Value
Source§impl FromIterator<Subtag> for Value
 
impl FromIterator<Subtag> for Value
Source§impl IntoIterator for Value
 
impl IntoIterator for Value
Source§impl Ord for Value
 
impl Ord for Value
Source§impl PartialOrd for Value
 
impl PartialOrd for Value
Source§impl TryFrom<&Value> for CalendarAlgorithm
 
impl TryFrom<&Value> for CalendarAlgorithm
Source§type Error = PreferencesParseError
 
type Error = PreferencesParseError
Source§fn try_from(
    s: &Value,
) -> Result<CalendarAlgorithm, <CalendarAlgorithm as TryFrom<&Value>>::Error>
 
fn try_from( s: &Value, ) -> Result<CalendarAlgorithm, <CalendarAlgorithm as TryFrom<&Value>>::Error>
Source§impl TryFrom<&Value> for CollationCaseFirst
 
impl TryFrom<&Value> for CollationCaseFirst
Source§type Error = PreferencesParseError
 
type Error = PreferencesParseError
Source§fn try_from(
    s: &Value,
) -> Result<CollationCaseFirst, <CollationCaseFirst as TryFrom<&Value>>::Error>
 
fn try_from( s: &Value, ) -> Result<CollationCaseFirst, <CollationCaseFirst as TryFrom<&Value>>::Error>
Source§impl TryFrom<&Value> for CollationNumericOrdering
 
impl TryFrom<&Value> for CollationNumericOrdering
Source§type Error = PreferencesParseError
 
type Error = PreferencesParseError
Source§fn try_from(
    s: &Value,
) -> Result<CollationNumericOrdering, <CollationNumericOrdering as TryFrom<&Value>>::Error>
 
fn try_from( s: &Value, ) -> Result<CollationNumericOrdering, <CollationNumericOrdering as TryFrom<&Value>>::Error>
Source§impl TryFrom<&Value> for CollationType
 
impl TryFrom<&Value> for CollationType
Source§type Error = PreferencesParseError
 
type Error = PreferencesParseError
Source§fn try_from(
    s: &Value,
) -> Result<CollationType, <CollationType as TryFrom<&Value>>::Error>
 
fn try_from( s: &Value, ) -> Result<CollationType, <CollationType as TryFrom<&Value>>::Error>
Source§impl TryFrom<&Value> for CommonVariantType
 
impl TryFrom<&Value> for CommonVariantType
Source§type Error = PreferencesParseError
 
type Error = PreferencesParseError
Source§fn try_from(
    s: &Value,
) -> Result<CommonVariantType, <CommonVariantType as TryFrom<&Value>>::Error>
 
fn try_from( s: &Value, ) -> Result<CommonVariantType, <CommonVariantType as TryFrom<&Value>>::Error>
Source§impl TryFrom<&Value> for CurrencyFormatStyle
 
impl TryFrom<&Value> for CurrencyFormatStyle
Source§type Error = PreferencesParseError
 
type Error = PreferencesParseError
Source§fn try_from(
    s: &Value,
) -> Result<CurrencyFormatStyle, <CurrencyFormatStyle as TryFrom<&Value>>::Error>
 
fn try_from( s: &Value, ) -> Result<CurrencyFormatStyle, <CurrencyFormatStyle as TryFrom<&Value>>::Error>
Source§impl TryFrom<&Value> for EmojiPresentationStyle
 
impl TryFrom<&Value> for EmojiPresentationStyle
Source§type Error = PreferencesParseError
 
type Error = PreferencesParseError
Source§fn try_from(
    s: &Value,
) -> Result<EmojiPresentationStyle, <EmojiPresentationStyle as TryFrom<&Value>>::Error>
 
fn try_from( s: &Value, ) -> Result<EmojiPresentationStyle, <EmojiPresentationStyle as TryFrom<&Value>>::Error>
Source§impl TryFrom<&Value> for LineBreakStyle
 
impl TryFrom<&Value> for LineBreakStyle
Source§type Error = PreferencesParseError
 
type Error = PreferencesParseError
Source§fn try_from(
    s: &Value,
) -> Result<LineBreakStyle, <LineBreakStyle as TryFrom<&Value>>::Error>
 
fn try_from( s: &Value, ) -> Result<LineBreakStyle, <LineBreakStyle as TryFrom<&Value>>::Error>
Source§impl TryFrom<&Value> for LineBreakWordHandling
 
impl TryFrom<&Value> for LineBreakWordHandling
Source§type Error = PreferencesParseError
 
type Error = PreferencesParseError
Source§fn try_from(
    s: &Value,
) -> Result<LineBreakWordHandling, <LineBreakWordHandling as TryFrom<&Value>>::Error>
 
fn try_from( s: &Value, ) -> Result<LineBreakWordHandling, <LineBreakWordHandling as TryFrom<&Value>>::Error>
Source§impl TryFrom<&Value> for MeasurementSystem
 
impl TryFrom<&Value> for MeasurementSystem
Source§type Error = PreferencesParseError
 
type Error = PreferencesParseError
Source§fn try_from(
    s: &Value,
) -> Result<MeasurementSystem, <MeasurementSystem as TryFrom<&Value>>::Error>
 
fn try_from( s: &Value, ) -> Result<MeasurementSystem, <MeasurementSystem as TryFrom<&Value>>::Error>
Source§impl TryFrom<&Value> for MeasurementUnitOverride
 
impl TryFrom<&Value> for MeasurementUnitOverride
Source§type Error = PreferencesParseError
 
type Error = PreferencesParseError
Source§fn try_from(
    s: &Value,
) -> Result<MeasurementUnitOverride, <MeasurementUnitOverride as TryFrom<&Value>>::Error>
 
fn try_from( s: &Value, ) -> Result<MeasurementUnitOverride, <MeasurementUnitOverride as TryFrom<&Value>>::Error>
Source§impl TryFrom<&Value> for SentenceBreakSupressions
 
impl TryFrom<&Value> for SentenceBreakSupressions
Source§type Error = PreferencesParseError
 
type Error = PreferencesParseError
Source§fn try_from(
    s: &Value,
) -> Result<SentenceBreakSupressions, <SentenceBreakSupressions as TryFrom<&Value>>::Error>
 
fn try_from( s: &Value, ) -> Result<SentenceBreakSupressions, <SentenceBreakSupressions as TryFrom<&Value>>::Error>
Source§impl TryFrom<Value> for CurrencyType
 
impl TryFrom<Value> for CurrencyType
Source§type Error = PreferencesParseError
 
type Error = PreferencesParseError
Source§fn try_from(
    input: Value,
) -> Result<CurrencyType, <CurrencyType as TryFrom<Value>>::Error>
 
fn try_from( input: Value, ) -> Result<CurrencyType, <CurrencyType as TryFrom<Value>>::Error>
Source§impl TryFrom<Value> for DictionaryBreakScriptExclusions
 
impl TryFrom<Value> for DictionaryBreakScriptExclusions
Source§type Error = PreferencesParseError
 
type Error = PreferencesParseError
Source§fn try_from(
    input: Value,
) -> Result<DictionaryBreakScriptExclusions, <DictionaryBreakScriptExclusions as TryFrom<Value>>::Error>
 
fn try_from( input: Value, ) -> Result<DictionaryBreakScriptExclusions, <DictionaryBreakScriptExclusions as TryFrom<Value>>::Error>
Source§impl TryFrom<Value> for NumberingSystem
 
impl TryFrom<Value> for NumberingSystem
Source§type Error = PreferencesParseError
 
type Error = PreferencesParseError
Source§fn try_from(
    input: Value,
) -> Result<NumberingSystem, <NumberingSystem as TryFrom<Value>>::Error>
 
fn try_from( input: Value, ) -> Result<NumberingSystem, <NumberingSystem as TryFrom<Value>>::Error>
Source§impl TryFrom<Value> for RegionOverride
 
impl TryFrom<Value> for RegionOverride
Source§type Error = PreferencesParseError
 
type Error = PreferencesParseError
Source§fn try_from(
    input: Value,
) -> Result<RegionOverride, <RegionOverride as TryFrom<Value>>::Error>
 
fn try_from( input: Value, ) -> Result<RegionOverride, <RegionOverride as TryFrom<Value>>::Error>
Source§impl TryFrom<Value> for RegionalSubdivision
 
impl TryFrom<Value> for RegionalSubdivision
Source§type Error = PreferencesParseError
 
type Error = PreferencesParseError
Source§fn try_from(
    input: Value,
) -> Result<RegionalSubdivision, <RegionalSubdivision as TryFrom<Value>>::Error>
 
fn try_from( input: Value, ) -> Result<RegionalSubdivision, <RegionalSubdivision as TryFrom<Value>>::Error>
Source§impl TryFrom<Value> for TimeZoneShortId
 
impl TryFrom<Value> for TimeZoneShortId
Source§type Error = PreferencesParseError
 
type Error = PreferencesParseError
Source§fn try_from(
    input: Value,
) -> Result<TimeZoneShortId, <TimeZoneShortId as TryFrom<Value>>::Error>
 
fn try_from( input: Value, ) -> Result<TimeZoneShortId, <TimeZoneShortId as TryFrom<Value>>::Error>
Source§impl Writeable for Value
 
impl Writeable for Value
Source§fn write_to<W>(&self, sink: &mut W) -> Result<(), Error>
 
fn write_to<W>(&self, sink: &mut W) -> Result<(), Error>
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.impl Eq for Value
impl StructuralPartialEq for Value
Auto Trait Implementations§
impl Freeze for Value
impl RefUnwindSafe for Value
impl Send for Value
impl Sync for Value
impl Unpin for Value
impl UnwindSafe for Value
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> CloneToUninit for Twhere
    T: Clone,
 
impl<T> CloneToUninit for Twhere
    T: Clone,
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