pub trait StructSerializer: Serializer {
// Required methods
fn type_index() -> u32;
fn fields_info(
type_resolver: &TypeResolver,
) -> Result<Vec<FieldInfo>, Error>;
fn variants_fields_info(
type_resolver: &TypeResolver,
) -> Result<Vec<(String, TypeId, Vec<FieldInfo>)>, Error>;
fn sorted_field_names() -> &'static [&'static str];
fn read_compatible(
context: &mut ReadContext<'_>,
type_info: &Rc<TypeInfo>,
) -> Result<Self::Target, Error>;
// Provided methods
fn actual_type_id(
type_id: u32,
register_by_name: bool,
compatible: bool,
xlang: bool,
) -> Result<u32, Error> { ... }
fn read_compatible_arc_any(
context: &mut ReadContext<'_>,
type_info: &Rc<TypeInfo>,
) -> Result<Arc<dyn Any + Send + Sync>, Error> { ... }
}Expand description
Schema metadata and compatible reads for derive-generated serializers.
Required Methods§
fn type_index() -> u32
fn fields_info(type_resolver: &TypeResolver) -> Result<Vec<FieldInfo>, Error>
fn variants_fields_info( type_resolver: &TypeResolver, ) -> Result<Vec<(String, TypeId, Vec<FieldInfo>)>, Error>
fn sorted_field_names() -> &'static [&'static str]
fn read_compatible( context: &mut ReadContext<'_>, type_info: &Rc<TypeInfo>, ) -> Result<Self::Target, Error>
Provided Methods§
fn actual_type_id( type_id: u32, register_by_name: bool, compatible: bool, xlang: bool, ) -> Result<u32, Error>
fn read_compatible_arc_any( context: &mut ReadContext<'_>, type_info: &Rc<TypeInfo>, ) -> Result<Arc<dyn Any + Send + Sync>, Error>
Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety".