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
fn as_serialize(&self) -> &dyn Serialize
fn as_serialize(&self) -> &dyn Serialize
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
impl<'data> ZeroCopyFrom<dyn SerdeSeDataStruct<'data> + 'data> for SerdeSeDataStructDynRef<'static>
impl<'data> ZeroCopyFrom<dyn SerdeSeDataStruct<'data> + 'data> for SerdeSeDataStructDynRef<'static>
fn zero_copy_from<'b>(
this: &'b (dyn SerdeSeDataStruct<'data> + 'data)
) -> SerdeSeDataStructDynRef<'b>
fn zero_copy_from<'b>(
this: &'b (dyn SerdeSeDataStruct<'data> + 'data)
) -> SerdeSeDataStructDynRef<'b>
Clone the cart C
into a Yokeable
struct, which may retain references into C
.