| use crate::types::FluentType; |
| use intl_memoizer::Memoizable; |
| use unic_langid::LanguageIdentifier; |
| |
| /// This trait contains thread-safe methods which extend [intl_memoizer::IntlLangMemoizer]. |
| /// It is used as the generic bound in this crate when a memoizer is needed. |
| pub trait MemoizerKind: 'static { |
| fn new(lang: LanguageIdentifier) -> Self |
| where |
| Self: Sized; |
| |
| /// A threadsafe variant of `with_try_get` from [intl_memoizer::IntlLangMemoizer]. |
| /// The generics enforce that `Self` and its arguments are actually threadsafe. |
| /// |
| /// `I` - The [Memoizable](intl_memoizer::Memoizable) internationalization formatter. |
| /// |
| /// `R` - The result from the format operation. |
| /// |
| /// `U` - The callback that accepts the instance of the intl formatter, and generates |
| /// some kind of results `R`. |
| fn with_try_get_threadsafe<I, R, U>(&self, args: I::Args, callback: U) -> Result<R, I::Error> |
| where |
| Self: Sized, |
| I: Memoizable + Send + Sync + 'static, |
| I::Args: Send + Sync + 'static, |
| U: FnOnce(&I) -> R; |
| |
| /// Wires up the `as_string` or `as_string_threadsafe` variants for [`FluentType`]. |
| fn stringify_value(&self, value: &dyn FluentType) -> std::borrow::Cow<'static, str>; |
| } |