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§
Sourcefn schema(&self) -> &Schema<'_>
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.
Sourcefn serialize_members(
&self,
serializer: &mut dyn ShapeSerializer,
) -> Result<(), SerdeError>
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".