use crate::prelude::*;
pub trait IterableDynamicDataProvider<M: DataMarker>: DynamicDataProvider<M> {
fn supported_locales_for_key(&self, key: DataKey) -> Result<Vec<DataLocale>, DataError>;
}
pub trait IterableDataProvider<M: KeyedDataMarker>: DataProvider<M> {
fn supported_locales(&self) -> Result<Vec<DataLocale>, DataError>;
fn supports_locale(&self, locale: &DataLocale) -> Result<bool, DataError> {
self.supported_locales().map(|v| v.contains(locale))
}
}
impl<M, P> IterableDynamicDataProvider<M> for Box<P>
where
M: DataMarker,
P: IterableDynamicDataProvider<M> + ?Sized,
{
fn supported_locales_for_key(&self, key: DataKey) -> Result<Vec<DataLocale>, DataError> {
(**self).supported_locales_for_key(key)
}
}