Enum fluent::FluentValue
source · pub enum FluentValue<'source> {
String(Cow<'source, str>),
Number(FluentNumber),
Custom(Box<dyn FluentType + Send>),
None,
Error,
}
Expand description
The FluentValue
enum represents values which can be formatted to a String.
Those values are either passed as arguments to FluentBundle::format_pattern
or
produced by functions, or generated in the process of pattern resolution.
Variants§
Implementations§
source§impl<'source> FluentValue<'source>
impl<'source> FluentValue<'source>
sourcepub fn try_number(value: &'source str) -> FluentValue<'source>
pub fn try_number(value: &'source str) -> FluentValue<'source>
Attempts to parse the string representation of a value
that supports
ToString
into a FluentValue::Number
. If it fails, it will instead
convert it to a FluentValue::String
.
use fluent_bundle::types::{FluentNumber, FluentNumberOptions, FluentValue};
// "2" parses into a `FluentNumber`
assert_eq!(
FluentValue::try_number("2"),
FluentValue::Number(FluentNumber::new(2.0, FluentNumberOptions::default()))
);
// Floats can be parsed as well.
assert_eq!(
FluentValue::try_number("3.141569"),
FluentValue::Number(FluentNumber::new(
3.141569,
FluentNumberOptions {
minimum_fraction_digits: Some(6),
..Default::default()
}
))
);
// When a value is not a valid number, it falls back to a `FluentValue::String`
assert_eq!(
FluentValue::try_number("A string"),
FluentValue::String("A string".into())
);
sourcepub fn matches<R, M>(
&self,
other: &FluentValue<'_>,
scope: &Scope<'_, '_, '_, '_, R, M>
) -> boolwhere
R: Borrow<FluentResource>,
M: MemoizerKind,
pub fn matches<R, M>(
&self,
other: &FluentValue<'_>,
scope: &Scope<'_, '_, '_, '_, R, M>
) -> boolwhere
R: Borrow<FluentResource>,
M: MemoizerKind,
Checks to see if two FluentValues
match each other by having the
same type and contents. The special exception is in the case of a string being
compared to a number. Here attempt to check that the plural rule category matches.
use fluent_bundle::resolver::Scope;
use fluent_bundle::{types::FluentValue, FluentBundle, FluentResource};
use unic_langid::langid;
let langid_ars = langid!("en");
let bundle: FluentBundle<FluentResource> = FluentBundle::new(vec![langid_ars]);
let scope = Scope::new(&bundle, None, None);
// Matching examples:
assert!(FluentValue::try_number("2").matches(&FluentValue::try_number("2"), &scope));
assert!(FluentValue::from("fluent").matches(&FluentValue::from("fluent"), &scope));
assert!(
FluentValue::from("one").matches(&FluentValue::try_number("1"), &scope),
"Plural rules are matched."
);
// Non-matching examples:
assert!(!FluentValue::try_number("2").matches(&FluentValue::try_number("3"), &scope));
assert!(!FluentValue::from("fluent").matches(&FluentValue::from("not fluent"), &scope));
assert!(!FluentValue::from("two").matches(&FluentValue::try_number("100"), &scope),);
sourcepub fn write<W, R, M>(
&self,
w: &mut W,
scope: &Scope<'_, '_, '_, '_, R, M>
) -> Result<(), Error>
pub fn write<W, R, M>( &self, w: &mut W, scope: &Scope<'_, '_, '_, '_, R, M> ) -> Result<(), Error>
Write out a string version of the FluentValue
to W
.
sourcepub fn as_string<R, M>(
&self,
scope: &Scope<'_, '_, '_, '_, R, M>
) -> Cow<'source, str>where
R: Borrow<FluentResource>,
M: MemoizerKind,
pub fn as_string<R, M>(
&self,
scope: &Scope<'_, '_, '_, '_, R, M>
) -> Cow<'source, str>where
R: Borrow<FluentResource>,
M: MemoizerKind,
Converts the FluentValue
to a string.
Clones inner values when owned, borrowed data is not cloned.
Prefer using FluentValue::into_string()
when possible.
sourcepub fn into_string<R, M>(
self,
scope: &Scope<'_, '_, '_, '_, R, M>
) -> Cow<'source, str>where
R: Borrow<FluentResource>,
M: MemoizerKind,
pub fn into_string<R, M>(
self,
scope: &Scope<'_, '_, '_, '_, R, M>
) -> Cow<'source, str>where
R: Borrow<FluentResource>,
M: MemoizerKind,
Converts the FluentValue
to a string.
Takes self by-value to be able to skip expensive clones.
Prefer this method over FluentValue::as_string()
when possible.
pub fn into_owned<'a>(&self) -> FluentValue<'a>
Trait Implementations§
source§impl<'s> Clone for FluentValue<'s>
impl<'s> Clone for FluentValue<'s>
source§fn clone(&self) -> FluentValue<'s>
fn clone(&self) -> FluentValue<'s>
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moresource§impl<'source> Debug for FluentValue<'source>
impl<'source> Debug for FluentValue<'source>
source§impl<'source> From<&'source String> for FluentValue<'source>
impl<'source> From<&'source String> for FluentValue<'source>
source§fn from(s: &'source String) -> FluentValue<'source>
fn from(s: &'source String) -> FluentValue<'source>
source§impl From<&f32> for FluentValue<'_>
impl From<&f32> for FluentValue<'_>
source§fn from(n: &f32) -> FluentValue<'_>
fn from(n: &f32) -> FluentValue<'_>
source§impl From<&f64> for FluentValue<'_>
impl From<&f64> for FluentValue<'_>
source§fn from(n: &f64) -> FluentValue<'_>
fn from(n: &f64) -> FluentValue<'_>
source§impl From<&i128> for FluentValue<'_>
impl From<&i128> for FluentValue<'_>
source§fn from(n: &i128) -> FluentValue<'_>
fn from(n: &i128) -> FluentValue<'_>
source§impl From<&i16> for FluentValue<'_>
impl From<&i16> for FluentValue<'_>
source§fn from(n: &i16) -> FluentValue<'_>
fn from(n: &i16) -> FluentValue<'_>
source§impl From<&i32> for FluentValue<'_>
impl From<&i32> for FluentValue<'_>
source§fn from(n: &i32) -> FluentValue<'_>
fn from(n: &i32) -> FluentValue<'_>
source§impl From<&i64> for FluentValue<'_>
impl From<&i64> for FluentValue<'_>
source§fn from(n: &i64) -> FluentValue<'_>
fn from(n: &i64) -> FluentValue<'_>
source§impl From<&i8> for FluentValue<'_>
impl From<&i8> for FluentValue<'_>
source§fn from(n: &i8) -> FluentValue<'_>
fn from(n: &i8) -> FluentValue<'_>
source§impl From<&isize> for FluentValue<'_>
impl From<&isize> for FluentValue<'_>
source§fn from(n: &isize) -> FluentValue<'_>
fn from(n: &isize) -> FluentValue<'_>
source§impl<'source> From<&'source str> for FluentValue<'source>
impl<'source> From<&'source str> for FluentValue<'source>
source§fn from(s: &'source str) -> FluentValue<'source>
fn from(s: &'source str) -> FluentValue<'source>
source§impl From<&u128> for FluentValue<'_>
impl From<&u128> for FluentValue<'_>
source§fn from(n: &u128) -> FluentValue<'_>
fn from(n: &u128) -> FluentValue<'_>
source§impl From<&u16> for FluentValue<'_>
impl From<&u16> for FluentValue<'_>
source§fn from(n: &u16) -> FluentValue<'_>
fn from(n: &u16) -> FluentValue<'_>
source§impl From<&u32> for FluentValue<'_>
impl From<&u32> for FluentValue<'_>
source§fn from(n: &u32) -> FluentValue<'_>
fn from(n: &u32) -> FluentValue<'_>
source§impl From<&u64> for FluentValue<'_>
impl From<&u64> for FluentValue<'_>
source§fn from(n: &u64) -> FluentValue<'_>
fn from(n: &u64) -> FluentValue<'_>
source§impl From<&u8> for FluentValue<'_>
impl From<&u8> for FluentValue<'_>
source§fn from(n: &u8) -> FluentValue<'_>
fn from(n: &u8) -> FluentValue<'_>
source§impl From<&usize> for FluentValue<'_>
impl From<&usize> for FluentValue<'_>
source§fn from(n: &usize) -> FluentValue<'_>
fn from(n: &usize) -> FluentValue<'_>
source§impl<'l> From<FluentNumber> for FluentValue<'l>
impl<'l> From<FluentNumber> for FluentValue<'l>
source§fn from(input: FluentNumber) -> FluentValue<'l>
fn from(input: FluentNumber) -> FluentValue<'l>
source§impl<'source, T> From<Option<T>> for FluentValue<'source>where
T: Into<FluentValue<'source>>,
impl<'source, T> From<Option<T>> for FluentValue<'source>where
T: Into<FluentValue<'source>>,
source§fn from(v: Option<T>) -> FluentValue<'source>
fn from(v: Option<T>) -> FluentValue<'source>
source§impl<'source> From<String> for FluentValue<'source>
impl<'source> From<String> for FluentValue<'source>
source§fn from(s: String) -> FluentValue<'source>
fn from(s: String) -> FluentValue<'source>
source§impl From<f32> for FluentValue<'_>
impl From<f32> for FluentValue<'_>
source§fn from(n: f32) -> FluentValue<'_>
fn from(n: f32) -> FluentValue<'_>
source§impl From<f64> for FluentValue<'_>
impl From<f64> for FluentValue<'_>
source§fn from(n: f64) -> FluentValue<'_>
fn from(n: f64) -> FluentValue<'_>
source§impl From<i128> for FluentValue<'_>
impl From<i128> for FluentValue<'_>
source§fn from(n: i128) -> FluentValue<'_>
fn from(n: i128) -> FluentValue<'_>
source§impl From<i16> for FluentValue<'_>
impl From<i16> for FluentValue<'_>
source§fn from(n: i16) -> FluentValue<'_>
fn from(n: i16) -> FluentValue<'_>
source§impl From<i32> for FluentValue<'_>
impl From<i32> for FluentValue<'_>
source§fn from(n: i32) -> FluentValue<'_>
fn from(n: i32) -> FluentValue<'_>
source§impl From<i64> for FluentValue<'_>
impl From<i64> for FluentValue<'_>
source§fn from(n: i64) -> FluentValue<'_>
fn from(n: i64) -> FluentValue<'_>
source§impl From<i8> for FluentValue<'_>
impl From<i8> for FluentValue<'_>
source§fn from(n: i8) -> FluentValue<'_>
fn from(n: i8) -> FluentValue<'_>
source§impl From<isize> for FluentValue<'_>
impl From<isize> for FluentValue<'_>
source§fn from(n: isize) -> FluentValue<'_>
fn from(n: isize) -> FluentValue<'_>
source§impl From<u128> for FluentValue<'_>
impl From<u128> for FluentValue<'_>
source§fn from(n: u128) -> FluentValue<'_>
fn from(n: u128) -> FluentValue<'_>
source§impl From<u16> for FluentValue<'_>
impl From<u16> for FluentValue<'_>
source§fn from(n: u16) -> FluentValue<'_>
fn from(n: u16) -> FluentValue<'_>
source§impl From<u32> for FluentValue<'_>
impl From<u32> for FluentValue<'_>
source§fn from(n: u32) -> FluentValue<'_>
fn from(n: u32) -> FluentValue<'_>
source§impl From<u64> for FluentValue<'_>
impl From<u64> for FluentValue<'_>
source§fn from(n: u64) -> FluentValue<'_>
fn from(n: u64) -> FluentValue<'_>
source§impl From<u8> for FluentValue<'_>
impl From<u8> for FluentValue<'_>
source§fn from(n: u8) -> FluentValue<'_>
fn from(n: u8) -> FluentValue<'_>
source§impl From<usize> for FluentValue<'_>
impl From<usize> for FluentValue<'_>
source§fn from(n: usize) -> FluentValue<'_>
fn from(n: usize) -> FluentValue<'_>
source§impl<'s> PartialEq for FluentValue<'s>
impl<'s> PartialEq for FluentValue<'s>
source§fn eq(&self, other: &FluentValue<'s>) -> bool
fn eq(&self, other: &FluentValue<'s>) -> bool
self
and other
values to be equal, and is used
by ==
.