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

pub trait SerdeSeDataStruct<'data>: 'data {
    fn clone_into_box(&self) -> Box<dyn SerdeSeDataStruct<'data> + '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>.

Required methods

Clone this trait object reference, returning a boxed trait object.

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

The resulting type after obtaining ownership.

Creates owned data from borrowed data, usually by cloning. Read more

🔬 This is a nightly-only experimental API. (toowned_clone_into)

recently added

Uses borrowed data to replace owned data, usually by cloning. Read more

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

Implementors