pub struct Fields(/* private fields */);
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::{key, Fields, Value};
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");
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) -> Fields
pub fn clear(&mut self) -> Fields
Empties the Fields
list.
Returns the old list.
§Examples
use icu::locale::extensions::transform::{key, Fields, Value};
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::{key, Fields, Value};
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.
§Examples
use icu::locale::extensions::transform::{key, Value};
use icu::locale::Locale;
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.
§Examples
use icu::locale::extensions::transform::key;
use icu::locale::Locale;
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::default());
Trait Implementations§
source§impl Display for Fields
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 Ord for Fields
impl Ord for Fields
source§impl PartialOrd for Fields
impl PartialOrd for Fields
source§impl Writeable for Fields
impl Writeable for Fields
source§fn write_to<W>(&self, sink: &mut W) -> Result<(), Error>
fn write_to<W>(&self, sink: &mut W) -> Result<(), Error>
Writes a string to the given sink. Errors from the sink are bubbled up.
The default implementation delegates to
write_to_parts
, and discards any
Part
annotations.source§fn writeable_length_hint(&self) -> LengthHint
fn writeable_length_hint(&self) -> LengthHint
Returns a hint for the number of UTF-8 bytes that will be written to the sink. Read more
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,
Write bytes and
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 Fields
impl StructuralPartialEq for Fields
Auto Trait Implementations§
impl Freeze for Fields
impl RefUnwindSafe for Fields
impl Send for Fields
impl Sync for Fields
impl Unpin for Fields
impl UnwindSafe for Fields
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
Mutably borrows from an owned value. Read more
source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
source§unsafe fn clone_to_uninit(&self, dst: *mut T)
unsafe fn clone_to_uninit(&self, dst: *mut T)
🔬This is a nightly-only experimental API. (
clone_to_uninit
)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>
Converts
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>
Converts
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