pub struct FluentArgs<'args>(Vec<(Cow<'args, str>, FluentValue<'args>)>);Expand description
Fluent messages can use arguments in order to programmatically add values to a translated string. For instance, in a localized application you may wish to display a user’s email count. This could be done with the following message.
msg-key = Hello, { $user }. You have { $emailCount } messages.
Here $user and $emailCount are the arguments, which can be filled with values.
The FluentArgs struct is the map from the argument name (for example $user) to
the argument value (for example “John”.) The logic to apply these to write these
to messages is elsewhere, this struct just stores the value.
§Example
use fluent_bundle::{FluentArgs, FluentBundle, FluentResource};
let mut args = FluentArgs::new();
args.set("user", "John");
args.set("emailCount", 5);
let res = FluentResource::try_new(r#"
msg-key = Hello, { $user }. You have { $emailCount } messages.
"#.to_string())
.expect("Failed to parse FTL.");
let mut bundle = FluentBundle::default();
// For this example, we'll turn on BiDi support.
// Please, be careful when doing it, it's a risky move.
bundle.set_use_isolating(false);
bundle.add_resource(res)
.expect("Failed to add a resource.");
let mut err = vec![];
let msg = bundle.get_message("msg-key")
.expect("Failed to retrieve a message.");
let value = msg.value()
.expect("Failed to retrieve a value.");
assert_eq!(
bundle.format_pattern(value, Some(&args), &mut err),
"Hello, John. You have 5 messages."
);Tuple Fields§
§0: Vec<(Cow<'args, str>, FluentValue<'args>)>Implementations§
Source§impl<'args> FluentArgs<'args>
impl<'args> FluentArgs<'args>
Sourcepub fn new() -> FluentArgs<'args>
pub fn new() -> FluentArgs<'args>
Creates a new empty argument map.
Sourcepub fn with_capacity(capacity: usize) -> FluentArgs<'args>
pub fn with_capacity(capacity: usize) -> FluentArgs<'args>
Pre-allocates capacity for arguments.
Sourcepub fn get<K>(&self, key: K) -> Option<&FluentValue<'args>>
pub fn get<K>(&self, key: K) -> Option<&FluentValue<'args>>
Gets the FluentValue at the key if it exists.
Sourcepub fn iter(&self) -> impl Iterator<Item = (&str, &FluentValue<'_>)>
pub fn iter(&self) -> impl Iterator<Item = (&str, &FluentValue<'_>)>
Iterate over a tuple of the key an FluentValue.
Trait Implementations§
Source§impl<'args> Debug for FluentArgs<'args>
impl<'args> Debug for FluentArgs<'args>
Source§impl<'args> Default for FluentArgs<'args>
impl<'args> Default for FluentArgs<'args>
Source§fn default() -> FluentArgs<'args>
fn default() -> FluentArgs<'args>
Source§impl<'args, K, V> FromIterator<(K, V)> for FluentArgs<'args>
impl<'args, K, V> FromIterator<(K, V)> for FluentArgs<'args>
Source§fn from_iter<I>(iter: I) -> FluentArgs<'args>where
I: IntoIterator<Item = (K, V)>,
fn from_iter<I>(iter: I) -> FluentArgs<'args>where
I: IntoIterator<Item = (K, V)>,
Source§impl<'args> IntoIterator for FluentArgs<'args>
impl<'args> IntoIterator for FluentArgs<'args>
Auto Trait Implementations§
impl<'args> !DynSend for FluentArgs<'args>
impl<'args> !DynSync for FluentArgs<'args>
impl<'args> Freeze for FluentArgs<'args>
impl<'args> !RefUnwindSafe for FluentArgs<'args>
impl<'args> Send for FluentArgs<'args>
impl<'args> !Sync for FluentArgs<'args>
impl<'args> Unpin for FluentArgs<'args>
impl<'args> !UnwindSafe for FluentArgs<'args>
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> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
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 moreSource§impl<T> Pointable for T
impl<T> Pointable for T
Source§impl<T> WithSubscriber for T
impl<T> WithSubscriber for T
Source§fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
Source§fn with_current_subscriber(self) -> WithDispatch<Self>
fn with_current_subscriber(self) -> WithDispatch<Self>
impl<T> ErasedDestructor for Twhere
T: 'static,
Layout§
Note: Most layout information is completely unstable and may even differ between compilations. The only exception is types with certain repr(...) attributes. Please see the Rust Reference's “Type Layout” chapter for details on type layout guarantees.
Size: 24 bytes