pub trait AnyProvider {
// Required method
fn load_any(
&self,
key: DataKey,
req: DataRequest<'_>,
) -> Result<AnyResponse, DataError>;
}
Expand description
An object-safe data provider that returns data structs cast to dyn Any
trait objects.
§Examples
use icu_provider::hello_world::*;
use icu_provider::prelude::*;
use std::borrow::Cow;
let any_provider = HelloWorldProvider.as_any_provider();
let req = DataRequest {
locale: &icu_locid::langid!("de").into(),
metadata: Default::default(),
};
// Downcasting manually
assert_eq!(
any_provider
.load_any(HelloWorldV1Marker::KEY, req)
.expect("load should succeed")
.downcast::<HelloWorldV1Marker>()
.expect("types should match")
.take_payload()
.unwrap()
.get(),
&HelloWorldV1 {
message: Cow::Borrowed("Hallo Welt"),
},
);
// Downcasting automatically
let downcasting_provider: &dyn DataProvider<HelloWorldV1Marker> =
&any_provider.as_downcasting();
assert_eq!(
downcasting_provider
.load(req)
.expect("load should succeed")
.take_payload()
.unwrap()
.get(),
&HelloWorldV1 {
message: Cow::Borrowed("Hallo Welt"),
},
);
Required Methods§
Sourcefn load_any(
&self,
key: DataKey,
req: DataRequest<'_>,
) -> Result<AnyResponse, DataError>
fn load_any( &self, key: DataKey, req: DataRequest<'_>, ) -> Result<AnyResponse, DataError>
Loads an AnyPayload
according to the key and request.