#[repr(transparent)]pub struct Pattern<B: PatternBackend> {
    pub store: B::Store,
    /* private fields */
}Expand description
A string pattern with placeholders.
There are 2 generic parameters: Backend and Store.
§Backend
This determines the nature of placeholders and serialized encoding of the pattern.
The following backends are available:
SinglePlaceholderfor patterns with up to one placeholder:"{0} days ago"DoublePlaceholderfor patterns with up to two placeholders:"{0} days, {1} hours ago"MultiNamedPlaceholderfor patterns with named placeholders:"{name} sent you a message"
§Format to Parts
Pattern propagates Parts from inner writeables. In addition, it supports annotating
Parts for individual literals or placeholders via the PlaceholderValueProvider trait.
§Examples
Interpolating a SinglePlaceholder pattern:
use core::str::FromStr;
use icu_pattern::Pattern;
use icu_pattern::SinglePlaceholder;
use writeable::assert_writeable_eq;
let pattern = Pattern::<SinglePlaceholder>::try_from_str(
    "Hello, {0}!",
    Default::default(),
)
.unwrap();
assert_writeable_eq!(pattern.interpolate(["Alice"]), "Hello, Alice!");Fields§
§store: B::StoreThe encoded storage
Implementations§
Source§impl<B> Pattern<B>where
    B: PatternBackend,
 
impl<B> Pattern<B>where
    B: PatternBackend,
Sourcepub fn try_from_items<'a, I>(items: I) -> Result<Box<Self>, Error>
 
pub fn try_from_items<'a, I>(items: I) -> Result<Box<Self>, Error>
Creates a pattern from an iterator of pattern items.
✨ Enabled with the alloc Cargo feature.
§Examples
use icu_pattern::Pattern;
use icu_pattern::PatternItemCow;
use icu_pattern::SinglePlaceholder;
use icu_pattern::SinglePlaceholderKey;
use std::borrow::Cow;
Pattern::<SinglePlaceholder>::try_from_items(
    [
        PatternItemCow::Placeholder(SinglePlaceholderKey::Singleton),
        PatternItemCow::Literal(Cow::Borrowed(" days")),
    ]
    .into_iter(),
)
.expect("valid pattern items");Source§impl<'a, B> Pattern<B>where
    B: PatternBackend,
    B::PlaceholderKeyCow<'a>: FromStr,
    <B::PlaceholderKeyCow<'a> as FromStr>::Err: Debug,
 
impl<'a, B> Pattern<B>where
    B: PatternBackend,
    B::PlaceholderKeyCow<'a>: FromStr,
    <B::PlaceholderKeyCow<'a> as FromStr>::Err: Debug,
Sourcepub fn try_from_str(
    pattern: &str,
    options: ParserOptions,
) -> Result<Box<Self>, Error>
 
pub fn try_from_str( pattern: &str, options: ParserOptions, ) -> Result<Box<Self>, Error>
Creates a pattern by parsing a syntax string.
✨ Enabled with the alloc Cargo feature.
§Examples
use icu_pattern::Pattern;
use icu_pattern::SinglePlaceholder;
// Create a pattern from a valid string:
Pattern::<SinglePlaceholder>::try_from_str("{0} days", Default::default())
    .expect("valid pattern");
// Error on an invalid pattern:
Pattern::<SinglePlaceholder>::try_from_str("{0 days", Default::default())
    .expect_err("mismatched braces");Source§impl<B> Pattern<B>where
    B: PatternBackend,
 
impl<B> Pattern<B>where
    B: PatternBackend,
Sourcepub fn iter(
    &self,
) -> impl Iterator<Item = PatternItem<'_, B::PlaceholderKey<'_>>> + '_
 
pub fn iter( &self, ) -> impl Iterator<Item = PatternItem<'_, B::PlaceholderKey<'_>>> + '_
Returns an iterator over the PatternItems in this pattern.
Sourcepub fn try_interpolate<'a, P>(
    &'a self,
    value_provider: P,
) -> impl TryWriteable<Error = B::Error<'a>> + Display + 'a
 
pub fn try_interpolate<'a, P>( &'a self, value_provider: P, ) -> impl TryWriteable<Error = B::Error<'a>> + Display + 'a
Returns a TryWriteable that interpolates items from the given replacement provider
into this pattern string.
Sourcepub fn try_interpolate_to_string<'a, P>(
    &'a self,
    value_provider: P,
) -> Result<String, (B::Error<'a>, String)>
 
pub fn try_interpolate_to_string<'a, P>( &'a self, value_provider: P, ) -> Result<String, (B::Error<'a>, String)>
Interpolates the pattern directly to a string, returning the string or an error.
In addition to the error, the lossy fallback string is returned in the failure case.
✨ Enabled with the alloc Cargo feature.
Source§impl<B> Pattern<B>where
    for<'b> B: PatternBackend<Error<'b> = Infallible>,
 
impl<B> Pattern<B>where
    for<'b> B: PatternBackend<Error<'b> = Infallible>,
Sourcepub fn interpolate<'a, P>(
    &'a self,
    value_provider: P,
) -> impl Writeable + Display + 'a
 
pub fn interpolate<'a, P>( &'a self, value_provider: P, ) -> impl Writeable + Display + 'a
Returns a Writeable that interpolates items from the given replacement provider
into this pattern string.
Sourcepub fn interpolate_to_string<'a, P>(&'a self, value_provider: P) -> String
 
pub fn interpolate_to_string<'a, P>(&'a self, value_provider: P) -> String
Interpolates the pattern directly to a string.
✨ Enabled with the alloc Cargo feature.
Trait Implementations§
Source§impl<B: PatternBackend> Debug for Pattern<B>
 
impl<B: PatternBackend> Debug for Pattern<B>
Source§impl<B: PatternBackend> Default for &'static Pattern<B>
 
impl<B: PatternBackend> Default for &'static Pattern<B>
Source§impl<'de, 'data, B: PatternBackend> Deserialize<'de> for &'data Pattern<B>where
    &'data B::Store: Deserialize<'de>,
    'de: 'data,
 
impl<'de, 'data, B: PatternBackend> Deserialize<'de> for &'data Pattern<B>where
    &'data B::Store: Deserialize<'de>,
    'de: 'data,
Source§fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>where
    D: Deserializer<'de>,
 
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>where
    D: Deserializer<'de>,
Source§impl<'de, 'data, B> Deserialize<'de> for Box<Pattern<B>>
 
impl<'de, 'data, B> Deserialize<'de> for Box<Pattern<B>>
Source§fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>where
    D: Deserializer<'de>,
 
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>where
    D: Deserializer<'de>,
Source§impl<B: PatternBackend> PartialEq for Pattern<B>
 
impl<B: PatternBackend> PartialEq for Pattern<B>
Source§impl<B: PatternBackend> Serialize for Pattern<B>where
    B::Store: Serialize,
    for<'a> B::PlaceholderKeyCow<'a>: Serialize + From<B::PlaceholderKey<'a>>,
 
impl<B: PatternBackend> Serialize for Pattern<B>where
    B::Store: Serialize,
    for<'a> B::PlaceholderKeyCow<'a>: Serialize + From<B::PlaceholderKey<'a>>,
Source§impl<B: PatternBackend> ToOwned for Pattern<B>
 
impl<B: PatternBackend> ToOwned for Pattern<B>
Source§impl<B, S: ?Sized + VarULE> VarULE for Pattern<B>where
    B: PatternBackend<Store = S>,
Implement VarULE for Pattern<SinglePlaceholder, str>.
 
impl<B, S: ?Sized + VarULE> VarULE for Pattern<B>where
    B: PatternBackend<Store = S>,
Implement VarULE for Pattern<SinglePlaceholder, str>.
§Safety
Safety checklist for ULE:
Pattern<B>does not include any uninitialized or padding bytes.Pattern<B>is aligned to 1 byte.- The implementation of 
validate_bytes()returns an error if any byte is not valid. - The implementation of 
validate_bytes()returns an error if the slice cannot be used to build aPattern<B>in its entirety. - The implementation of 
from_bytes_unchecked()returns a reference to the same data. parse_bytes()is equivalent tovalidate_bytes()followed byfrom_bytes_unchecked().Pattern<B>byte equality is semantic equality.
Source§fn validate_bytes(bytes: &[u8]) -> Result<(), UleError>
 
fn validate_bytes(bytes: &[u8]) -> Result<(), UleError>
&[u8]. Read moreSource§unsafe fn from_bytes_unchecked(bytes: &[u8]) -> &Self
 
unsafe fn from_bytes_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_bytes() with
success. Read moreSource§impl<'a, B: PatternBackend> ZeroMapKV<'a> for Pattern<B>
 
impl<'a, B: PatternBackend> ZeroMapKV<'a> for Pattern<B>
Source§type Container = VarZeroVec<'a, Pattern<B>>
 
type Container = VarZeroVec<'a, Pattern<B>>
ZeroVec or VarZeroVec.type Slice = VarZeroSlice<Pattern<B>>
Auto Trait Implementations§
impl<B> Freeze for Pattern<B>
impl<B> RefUnwindSafe for Pattern<B>
impl<B> Send for Pattern<B>
impl<B> Sync for Pattern<B>
impl<B> Unpin for Pattern<B>
impl<B> UnwindSafe for Pattern<B>
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> EncodeAsVarULE<T> for T
 
impl<T> EncodeAsVarULE<T> for T
Source§fn encode_var_ule_as_slices<R>(&self, cb: impl FnOnce(&[&[u8]]) -> R) -> R
 
fn encode_var_ule_as_slices<R>(&self, cb: impl FnOnce(&[&[u8]]) -> R) -> R
cb with a piecewise list of byte slices that when concatenated
produce the memory pattern of the corresponding instance of T. Read moreSource§fn encode_var_ule_len(&self) -> usize
 
fn encode_var_ule_len(&self) -> usize
VarULE typeSource§fn encode_var_ule_write(&self, dst: &mut [u8])
 
fn encode_var_ule_write(&self, dst: &mut [u8])
VarULE type to the dst buffer. dst should
be the size of Self::encode_var_ule_len()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