Trait icu_provider::serde::SerdeSeDataStruct[][src]

pub trait SerdeSeDataStruct<'data>: IsCovariant<'data> {
    fn as_serialize(&self) -> &dyn Serialize;
}
Expand description

Auto-implemented trait for all data structs that support serde::Serialize. This trait is usually used as a trait object in DataProvider<dyn SerdeSeDataStruct>.

This trait requires IsCovariant such that it can be safely used as a trait object in DataProvider.

Required methods

Return this trait object reference for Serde serialization.

Examples
use icu_provider::serde::SerdeSeDataStruct;
use icu_provider::hello_world::HelloWorldV1;

// Create type-erased reference
let data = HelloWorldV1::default();
let erased: &dyn SerdeSeDataStruct = &data;

// Borrow as serialize trait object
let serialize: &dyn erased_serde::Serialize = erased.as_serialize();

// Serialize the object to a JSON string
let mut buffer: Vec<u8> = vec![];
serialize.erased_serialize(
    &mut erased_serde::Serializer::erase(
        &mut serde_json::Serializer::new(&mut buffer)
    )
).expect("Serialization should succeed");
assert_eq!("{\"message\":\"(und) Hello World\"}".as_bytes(), buffer);

Trait Implementations

Clone the cart C into a Yokeable struct, which may retain references into C.

Implementors