Open
Description
FluentArgs
's key API (beyond construction) would appear to be get
. Maybe also iter
; I don't know if that's actually needed.
Can we replace the type with a trait?
pub trait Arguments {
fn get(&self, key: &str) -> Option<FluentValue<'_>>;
// if necessary:
// type Iter<'a>: Iterator<Item = (&'a str, FluentValue<'a>)> + 'a;
// fn iter(&self) -> Self::Iter<'_>;
// (Later this can just use impl Trait: see RFC#3425.)
}
(Technically, FluentArgs
and fluent_args!
don't need to change, but FluentBundle::write_pattern
, format_pattern
should use the trait.)
Motivation: this allows any type implementing fluent::Arguments
to be used as arguments (often just via a derive macro). So, say, a Druid widget FluentText: druid::Widget<T>
with data: &T
could directly use that data type as arguments.
Edit: return FluentValue
by value not ref to allow construction in get
and Iterator::next
.