Expand description

Data exporter that creates a binary blob for use with BlobDataProvider.

This module can be used as a target for the icu_datagen crate.

See our datagen tutorial for more information about different data providers.

Examples

use icu_datagen::prelude::*;
use icu_provider_blob::export::*;

let mut blob: Vec<u8> = Vec::new();

// Set up the exporter
let mut exporter = BlobExporter::new_v2_with_sink(Box::new(&mut blob));

// Export something
DatagenDriver::new()
    .with_keys([icu_provider::hello_world::HelloWorldV1Marker::KEY])
    .with_all_locales()
    .export(&DatagenProvider::new_latest_tested(), exporter)
    .unwrap();

// communicate the blob to the client application (network, disk, etc.)

The resulting blob can now be used like this:

use icu_locid::langid;
use icu_provider::hello_world::*;
use icu_provider::prelude::*;
use icu_provider_blob::BlobDataProvider;

// obtain the data blob

// Create a provider reading from the blob
let provider = BlobDataProvider::try_new_from_blob(blob.into_boxed_slice())
    .expect("Should successfully read from blob");

// Use the provider as a `BufferProvider`
let formatter = HelloWorldFormatter::try_new_with_buffer_provider(
    &provider,
    &langid!("en").into(),
)
.unwrap();

assert_eq!(formatter.format_to_string(), "Hello World");

Structs

  • A data exporter that writes data to a single-file blob. See the module-level docs for an example.