pub struct Fields(LiteMap<Key, Value>);Expand description
A list of Key-Value pairs representing functional information
about content transformations.
Here are examples of fields used in Unicode:
s0,d0- Transform source/destinationt0- Machine Translationh0- Hybrid Locale Identifiers
You can find the full list in Unicode BCP 47 T Extension section of LDML.
§Examples
use icu::locale::extensions::transform::{Fields, Value, key};
let value = "hybrid".parse::<Value>().expect("Failed to parse a Value.");
let fields = [(key!("h0"), value)].into_iter().collect::<Fields>();
assert_eq!(&fields.to_string(), "h0-hybrid");Tuple Fields§
§0: LiteMap<Key, Value>Implementations§
Source§impl Fields
impl Fields
Sourcepub fn is_empty(&self) -> bool
pub fn is_empty(&self) -> bool
Returns true if there are no fields.
§Examples
use icu::locale::Locale;
use icu::locale::locale;
let loc1 = Locale::try_from_str("und-t-h0-hybrid").unwrap();
let loc2 = locale!("und-u-ca-buddhist");
assert!(!loc1.extensions.transform.fields.is_empty());
assert!(loc2.extensions.transform.fields.is_empty());Sourcepub fn clear(&mut self) -> Self
pub fn clear(&mut self) -> Self
Empties the Fields list.
Returns the old list.
§Examples
use icu::locale::extensions::transform::{Fields, Value, key};
let value = "hybrid".parse::<Value>().expect("Failed to parse a Value.");
let mut fields = [(key!("h0"), value)].into_iter().collect::<Fields>();
assert_eq!(&fields.to_string(), "h0-hybrid");
fields.clear();
assert_eq!(fields, Fields::new());Sourcepub fn contains_key<Q>(&self, key: &Q) -> bool
pub fn contains_key<Q>(&self, key: &Q) -> bool
Returns true if the list contains a Value for the specified Key.
§Examples
use icu::locale::extensions::transform::{Fields, Key, Value};
let key: Key = "h0".parse().expect("Failed to parse a Key.");
let value: Value = "hybrid".parse().expect("Failed to parse a Value.");
let mut fields = [(key, value)].into_iter().collect::<Fields>();
let key: Key = "h0".parse().expect("Failed to parse a Key.");
assert!(&fields.contains_key(&key));Sourcepub fn get<Q>(&self, key: &Q) -> Option<&Value>
pub fn get<Q>(&self, key: &Q) -> Option<&Value>
Returns a reference to the Value corresponding to the Key.
§Examples
use icu::locale::extensions::transform::{Fields, Value, key};
let value = "hybrid".parse::<Value>().unwrap();
let fields = [(key!("h0"), value.clone())]
.into_iter()
.collect::<Fields>();
assert_eq!(fields.get(&key!("h0")), Some(&value));Sourcepub fn set(&mut self, key: Key, value: Value) -> Option<Value>
pub fn set(&mut self, key: Key, value: Value) -> Option<Value>
Sets the specified keyword, returning the old value if it already existed.
✨ Enabled with the alloc Cargo feature.
§Examples
use icu::locale::Locale;
use icu::locale::extensions::transform::{Value, key};
let lower = "lower".parse::<Value>().expect("valid extension subtag");
let casefold = "casefold".parse::<Value>().expect("valid extension subtag");
let mut loc: Locale = "en-t-hi-d0-casefold"
.parse()
.expect("valid BCP-47 identifier");
let old_value = loc.extensions.transform.fields.set(key!("d0"), lower);
assert_eq!(old_value, Some(casefold));
assert_eq!(loc, "en-t-hi-d0-lower".parse().unwrap());Sourcepub fn retain_by_key<F>(&mut self, predicate: F)
pub fn retain_by_key<F>(&mut self, predicate: F)
Retains a subset of fields as specified by the predicate function.
✨ Enabled with the alloc Cargo feature.
§Examples
use icu::locale::Locale;
use icu::locale::extensions::transform::key;
let mut loc: Locale = "und-t-h0-hybrid-d0-hex-m0-xml".parse().unwrap();
loc.extensions
.transform
.fields
.retain_by_key(|&k| k == key!("h0"));
assert_eq!(loc, "und-t-h0-hybrid".parse().unwrap());
loc.extensions
.transform
.fields
.retain_by_key(|&k| k == key!("d0"));
assert_eq!(loc, Locale::UNKNOWN);pub(crate) fn for_each_subtag_str<E, F>(&self, f: &mut F) -> Result<(), E>
Trait Implementations§
Source§impl Display for Fields
This trait is implemented for compatibility with fmt!.
To create a string, [Writeable::write_to_string] is usually more efficient.
impl Display for Fields
This trait is implemented for compatibility with fmt!.
To create a string, [Writeable::write_to_string] is usually more efficient.
Source§impl From<LiteMap<Key, Value>> for Fields
Available on crate feature alloc only.✨ Enabled with the alloc Cargo feature.
impl From<LiteMap<Key, Value>> for Fields
alloc only.✨ Enabled with the alloc Cargo feature.
Source§impl FromIterator<(Key, Value)> for Fields
Available on crate feature alloc only.✨ Enabled with the alloc Cargo feature.
impl FromIterator<(Key, Value)> for Fields
alloc only.✨ Enabled with the alloc Cargo feature.
Source§impl Ord for Fields
impl Ord for Fields
1.21.0 (const: unstable) · Source§fn max(self, other: Self) -> Selfwhere
Self: Sized,
fn max(self, other: Self) -> Selfwhere
Self: Sized,
Source§impl PartialOrd for Fields
impl PartialOrd for Fields
Source§impl Writeable for Fields
impl Writeable for Fields
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_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.