pub trait HasFields<'mem, 'facet> {
// Required method
fn fields(&self) -> FieldIter<'mem, 'facet> ⓘ;
// Provided methods
fn fields_for_serialize(&self) -> FieldsForSerializeIter<'mem, 'facet> ⓘ { ... }
fn fields_for_binary_serialize(
&self,
) -> FieldsForSerializeIter<'mem, 'facet> ⓘ { ... }
}Expand description
Trait for types that have field methods
This trait allows code to be written generically over both structs and enums that provide field access and iteration capabilities.
Required Methods§
Provided Methods§
Sourcefn fields_for_serialize(&self) -> FieldsForSerializeIter<'mem, 'facet> ⓘ
fn fields_for_serialize(&self) -> FieldsForSerializeIter<'mem, 'facet> ⓘ
Iterates over fields in this type that should be included when it is serialized.
This respects #[facet(skip_serializing_if = ...)] and #[facet(skip_all_unless_truthy)]
predicates, which is correct for self-describing formats like JSON where skipped fields
can be reconstructed from the schema.
Sourcefn fields_for_binary_serialize(&self) -> FieldsForSerializeIter<'mem, 'facet> ⓘ
fn fields_for_binary_serialize(&self) -> FieldsForSerializeIter<'mem, 'facet> ⓘ
Iterates over fields for serialization to positional binary formats.
Unlike fields_for_serialize, this ignores
skip_serializing_if predicates (including those from skip_all_unless_truthy).
This is necessary for binary formats like postcard where fields are identified by
position rather than name - skipping fields would cause a mismatch between
serialized and expected field positions during deserialization.
Note: This still respects unconditional #[facet(skip)] and #[facet(skip_serializing)]
attributes, as those indicate fields that should never be serialized regardless of format.