Struct icu_provider_blob::BlobDataProvider
source · [−]pub struct BlobDataProvider { /* private fields */ }Expand description
A data provider loading data from blobs dynamically created at runtime.
This enables data blobs to be read from the filesystem or from an HTTP request dynamically at runtime, so that the code and data can be shipped separately.
If you prefer to bake the data into your binary, see StaticDataProvider.
Examples
use icu_locid::locale;
use icu_provider::prelude::*;
use icu_provider::hello_world::*;
use icu_provider_blob::BlobDataProvider;
use std::fs;
// Read an ICU4X data blob dynamically:
let blob = fs::read(concat!(
env!("CARGO_MANIFEST_DIR"),
"/tests/data/hello_world.postcard",
)).expect("Reading pre-computed postcard buffer");
// Create a DataProvider from it:
let provider = BlobDataProvider::new_from_rc_blob(blob.into())
.expect("Deserialization should succeed");
// Check that it works:
let response: DataPayload<HelloWorldV1Marker> = provider
.load_resource(&DataRequest {
options: locale!("la").into(),
metadata: Default::default(),
})
.expect("Data should be valid")
.take_payload()
.expect("Data should be present");
assert_eq!(response.get().message, "Ave, munde");Implementations
sourceimpl BlobDataProvider
impl BlobDataProvider
sourcepub fn new_from_rc_blob(blob: Rc<[u8]>) -> Result<Self, DataError>
pub fn new_from_rc_blob(blob: Rc<[u8]>) -> Result<Self, DataError>
Create a BlobDataProvider from an Rc blob of ICU4X data.
Trait Implementations
sourceimpl BufferProvider for BlobDataProvider
impl BufferProvider for BlobDataProvider
fn load_buffer(
&self,
key: ResourceKey,
req: &DataRequest
) -> Result<DataResponse<BufferMarker>, DataError>
sourceimpl<M> DynProvider<M> for BlobDataProvider where
M: DataMarker,
for<'de> YokeTraitHack<<M::Yokeable as Yokeable<'de>>::Output>: Deserialize<'de>,
impl<M> DynProvider<M> for BlobDataProvider where
M: DataMarker,
for<'de> YokeTraitHack<<M::Yokeable as Yokeable<'de>>::Output>: Deserialize<'de>,
sourcefn load_payload(
&self,
key: ResourceKey,
req: &DataRequest
) -> Result<DataResponse<M>, DataError>
fn load_payload(
&self,
key: ResourceKey,
req: &DataRequest
) -> Result<DataResponse<M>, DataError>
Query the provider for data, returning the result. Read more
sourceimpl<M> ResourceProvider<M> for BlobDataProvider where
M: ResourceMarker,
for<'de> YokeTraitHack<<M::Yokeable as Yokeable<'de>>::Output>: Deserialize<'de>,
impl<M> ResourceProvider<M> for BlobDataProvider where
M: ResourceMarker,
for<'de> YokeTraitHack<<M::Yokeable as Yokeable<'de>>::Output>: Deserialize<'de>,
sourcefn load_resource(&self, req: &DataRequest) -> Result<DataResponse<M>, DataError>
fn load_resource(&self, req: &DataRequest) -> Result<DataResponse<M>, DataError>
Query the provider for data, returning the result. Read more
Auto Trait Implementations
impl RefUnwindSafe for BlobDataProvider
impl !Send for BlobDataProvider
impl !Sync for BlobDataProvider
impl Unpin for BlobDataProvider
impl UnwindSafe for BlobDataProvider
Blanket Implementations
sourceimpl<P> AsDeserializingBufferProvider for P where
P: BufferProvider + ?Sized,
impl<P> AsDeserializingBufferProvider for P where
P: BufferProvider + ?Sized,
sourcefn as_deserializing(&self) -> DeserializingBufferProvider<'_, P>
fn as_deserializing(&self) -> DeserializingBufferProvider<'_, P>
Wrap this BufferProvider in a DeserializingBufferProvider.
sourceimpl<T> BorrowMut<T> for T where
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
const: unstable · sourcefn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more