Skip to main content

SerializableStruct

Trait SerializableStruct 

Source
pub trait SerializableStruct {
    // Required methods
    fn schema(&self) -> &Schema<'_>;
    fn serialize_members(
        &self,
        serializer: &mut dyn ShapeSerializer,
    ) -> Result<(), SerdeError>;
}
Expand description

Trait for structures that can be serialized via a schema.

Implemented by generated structure types. Because ShapeSerializer is object-safe, each struct gets one compiled serialize_members() that works with any serializer through dynamic dispatch.

§Example

ⓘ
impl SerializableStruct for MyStruct {
    fn schema(&self) -> &Schema<'_> {
        &MY_STRUCT_SCHEMA
    }

    fn serialize_members(&self, serializer: &mut dyn ShapeSerializer) -> Result<(), SerdeError> {
        serializer.write_string(&NAME_SCHEMA, &self.name)?;
        serializer.write_integer(&AGE_SCHEMA, self.age)?;
        Ok(())
    }
}

Required Methods§

Source

fn schema(&self) -> &Schema<'_>

Returns the schema of this structure or union itself, not of a member targeting it.

Borrowed from self so a value can report a schema built at runtime; generated types return their 'static schema, which coerces to the shorter lifetime.

Source

fn serialize_members( &self, serializer: &mut dyn ShapeSerializer, ) -> Result<(), SerdeError>

Serializes this structure’s members using the provided serializer.

Dyn Compatibility§

This trait is dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety".

Implementations on Foreign Types§

Source§

impl SerializableStruct for Infallible

Source§

fn schema(&self) -> &Schema<'_>

Source§

fn serialize_members( &self, _: &mut dyn ShapeSerializer, ) -> Result<(), SerdeError>

Source§

impl<T: SerializableStruct + ?Sized> SerializableStruct for Box<T>

Source§

fn schema(&self) -> &Schema<'_>

Source§

fn serialize_members( &self, serializer: &mut dyn ShapeSerializer, ) -> Result<(), SerdeError>

Implementors§