1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
use intl_memoizer::{concurrent::IntlLangMemoizer, Memoizable}; use unic_langid::LanguageIdentifier; use crate::bundle::FluentBundleBase; use crate::memoizer::MemoizerKind; use crate::types::FluentType; pub type FluentBundle<R> = FluentBundleBase<R, IntlLangMemoizer>; impl MemoizerKind for IntlLangMemoizer { fn new(lang: LanguageIdentifier) -> Self where Self: Sized, { IntlLangMemoizer::new(lang) } fn with_try_get_threadsafe<I, R, U>(&self, args: I::Args, cb: U) -> Result<R, I::Error> where Self: Sized, I: Memoizable + Send + Sync + 'static, I::Args: Send + Sync + 'static, U: FnOnce(&I) -> R, { self.with_try_get(args, cb) } fn stringify_value(&self, value: &dyn FluentType) -> std::borrow::Cow<'static, str> { value.as_string_threadsafe(self) } }