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
fn clone_into_box(&self) -> Box<dyn SerdeSeDataStruct<'data> + 'data>
fn clone_into_box(&self) -> Box<dyn SerdeSeDataStruct<'data> + 'data>
Clone this trait object reference, returning a boxed trait object.
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
type Owned = Box<dyn SerdeSeDataStruct<'data> + 'data>
type Owned = Box<dyn SerdeSeDataStruct<'data> + 'data>
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
impl<'data> ZeroCopyFrom<dyn SerdeSeDataStruct<'data> + 'data> for SerdeSeDataStructWrap<'static, 'static>
impl<'data> ZeroCopyFrom<dyn SerdeSeDataStruct<'data> + 'data> for SerdeSeDataStructWrap<'static, 'static>
fn zero_copy_from<'b>(
this: &'b (dyn SerdeSeDataStruct<'data> + 'data)
) -> SerdeSeDataStructWrap<'b, 'b>
fn zero_copy_from<'b>(
this: &'b (dyn SerdeSeDataStruct<'data> + 'data)
) -> SerdeSeDataStructWrap<'b, 'b>
Clone the cart C
into a Yokeable
struct, which may retain references into C
.