pub trait ShapeSerializer {
Show 22 methods
// Required methods
fn write_struct(
&mut self,
schema: &Schema,
value: &dyn SerializableStruct,
) -> Result<(), SerdeError>;
fn write_list(
&mut self,
schema: &Schema,
write_elements: &dyn Fn(&mut dyn ShapeSerializer) -> Result<(), SerdeError>,
) -> Result<(), SerdeError>;
fn write_map(
&mut self,
schema: &Schema,
write_entries: &dyn Fn(&mut dyn ShapeSerializer) -> Result<(), SerdeError>,
) -> Result<(), SerdeError>;
fn write_boolean(
&mut self,
schema: &Schema,
value: bool,
) -> Result<(), SerdeError>;
fn write_byte(
&mut self,
schema: &Schema,
value: i8,
) -> Result<(), SerdeError>;
fn write_short(
&mut self,
schema: &Schema,
value: i16,
) -> Result<(), SerdeError>;
fn write_integer(
&mut self,
schema: &Schema,
value: i32,
) -> Result<(), SerdeError>;
fn write_long(
&mut self,
schema: &Schema,
value: i64,
) -> Result<(), SerdeError>;
fn write_float(
&mut self,
schema: &Schema,
value: f32,
) -> Result<(), SerdeError>;
fn write_double(
&mut self,
schema: &Schema,
value: f64,
) -> Result<(), SerdeError>;
fn write_big_integer(
&mut self,
schema: &Schema,
value: &BigInteger,
) -> Result<(), SerdeError>;
fn write_big_decimal(
&mut self,
schema: &Schema,
value: &BigDecimal,
) -> Result<(), SerdeError>;
fn write_string(
&mut self,
schema: &Schema,
value: &str,
) -> Result<(), SerdeError>;
fn write_blob(
&mut self,
schema: &Schema,
value: &Blob,
) -> Result<(), SerdeError>;
fn write_timestamp(
&mut self,
schema: &Schema,
value: &DateTime,
) -> Result<(), SerdeError>;
fn write_document(
&mut self,
schema: &Schema,
value: &Document,
) -> Result<(), SerdeError>;
fn write_null(&mut self, schema: &Schema) -> Result<(), SerdeError>;
// Provided methods
fn write_string_list(
&mut self,
schema: &Schema,
values: &[String],
) -> Result<(), SerdeError> { ... }
fn write_blob_list(
&mut self,
schema: &Schema,
values: &[Blob],
) -> Result<(), SerdeError> { ... }
fn write_integer_list(
&mut self,
schema: &Schema,
values: &[i32],
) -> Result<(), SerdeError> { ... }
fn write_long_list(
&mut self,
schema: &Schema,
values: &[i64],
) -> Result<(), SerdeError> { ... }
fn write_string_string_map(
&mut self,
schema: &Schema,
values: &HashMap<String, String>,
) -> Result<(), SerdeError> { ... }
}Expand description
Serializes Smithy shapes to a target format.
This trait provides a format-agnostic API for serializing the Smithy data model. Implementations serialize each data type to the corresponding encoding in their serial format (e.g., Smithy integers and floats to JSON numbers).
The serializer accepts a schema along with the value to provide additional information about how to serialize the value (e.g., timestamp format, JSON name).
This trait is object-safe so that generated SerializableStruct implementations
can use &mut dyn ShapeSerializer, producing one compiled serialize_members()
per shape regardless of how many codecs exist (shapes + codecs rather than
shapes * codecs in binary size).
§Example
let mut serializer = JsonSerializer::new();
serializer.write_string(&STRING_SCHEMA, "hello")?;Required Methods§
Sourcefn write_struct(
&mut self,
schema: &Schema,
value: &dyn SerializableStruct,
) -> Result<(), SerdeError>
fn write_struct( &mut self, schema: &Schema, value: &dyn SerializableStruct, ) -> Result<(), SerdeError>
Writes a structure to the serializer.
§Arguments
schema- The schema of the structure being serializedvalue- The structure to serialize
Sourcefn write_list(
&mut self,
schema: &Schema,
write_elements: &dyn Fn(&mut dyn ShapeSerializer) -> Result<(), SerdeError>,
) -> Result<(), SerdeError>
fn write_list( &mut self, schema: &Schema, write_elements: &dyn Fn(&mut dyn ShapeSerializer) -> Result<(), SerdeError>, ) -> Result<(), SerdeError>
Writes a list to the serializer.
§Arguments
schema- The schema of the list being serializedwrite_elements- Callback that writes the list elements
Sourcefn write_map(
&mut self,
schema: &Schema,
write_entries: &dyn Fn(&mut dyn ShapeSerializer) -> Result<(), SerdeError>,
) -> Result<(), SerdeError>
fn write_map( &mut self, schema: &Schema, write_entries: &dyn Fn(&mut dyn ShapeSerializer) -> Result<(), SerdeError>, ) -> Result<(), SerdeError>
Writes a map to the serializer.
§Arguments
schema- The schema of the map being serializedwrite_entries- Callback that writes the map entries
Sourcefn write_boolean(
&mut self,
schema: &Schema,
value: bool,
) -> Result<(), SerdeError>
fn write_boolean( &mut self, schema: &Schema, value: bool, ) -> Result<(), SerdeError>
Writes a boolean value.
Sourcefn write_byte(&mut self, schema: &Schema, value: i8) -> Result<(), SerdeError>
fn write_byte(&mut self, schema: &Schema, value: i8) -> Result<(), SerdeError>
Writes a byte (i8) value.
Sourcefn write_short(&mut self, schema: &Schema, value: i16) -> Result<(), SerdeError>
fn write_short(&mut self, schema: &Schema, value: i16) -> Result<(), SerdeError>
Writes a short (i16) value.
Sourcefn write_integer(
&mut self,
schema: &Schema,
value: i32,
) -> Result<(), SerdeError>
fn write_integer( &mut self, schema: &Schema, value: i32, ) -> Result<(), SerdeError>
Writes an integer (i32) value.
Sourcefn write_long(&mut self, schema: &Schema, value: i64) -> Result<(), SerdeError>
fn write_long(&mut self, schema: &Schema, value: i64) -> Result<(), SerdeError>
Writes a long (i64) value.
Sourcefn write_float(&mut self, schema: &Schema, value: f32) -> Result<(), SerdeError>
fn write_float(&mut self, schema: &Schema, value: f32) -> Result<(), SerdeError>
Writes a float (f32) value.
Sourcefn write_double(
&mut self,
schema: &Schema,
value: f64,
) -> Result<(), SerdeError>
fn write_double( &mut self, schema: &Schema, value: f64, ) -> Result<(), SerdeError>
Writes a double (f64) value.
Sourcefn write_big_integer(
&mut self,
schema: &Schema,
value: &BigInteger,
) -> Result<(), SerdeError>
fn write_big_integer( &mut self, schema: &Schema, value: &BigInteger, ) -> Result<(), SerdeError>
Writes a big integer value.
Sourcefn write_big_decimal(
&mut self,
schema: &Schema,
value: &BigDecimal,
) -> Result<(), SerdeError>
fn write_big_decimal( &mut self, schema: &Schema, value: &BigDecimal, ) -> Result<(), SerdeError>
Writes a big decimal value.
Sourcefn write_string(
&mut self,
schema: &Schema,
value: &str,
) -> Result<(), SerdeError>
fn write_string( &mut self, schema: &Schema, value: &str, ) -> Result<(), SerdeError>
Writes a string value.
Sourcefn write_blob(
&mut self,
schema: &Schema,
value: &Blob,
) -> Result<(), SerdeError>
fn write_blob( &mut self, schema: &Schema, value: &Blob, ) -> Result<(), SerdeError>
Writes a blob (byte array) value.
Sourcefn write_timestamp(
&mut self,
schema: &Schema,
value: &DateTime,
) -> Result<(), SerdeError>
fn write_timestamp( &mut self, schema: &Schema, value: &DateTime, ) -> Result<(), SerdeError>
Writes a timestamp value.
Sourcefn write_document(
&mut self,
schema: &Schema,
value: &Document,
) -> Result<(), SerdeError>
fn write_document( &mut self, schema: &Schema, value: &Document, ) -> Result<(), SerdeError>
Writes a document value.
Sourcefn write_null(&mut self, schema: &Schema) -> Result<(), SerdeError>
fn write_null(&mut self, schema: &Schema) -> Result<(), SerdeError>
Writes a null value (for sparse collections).
Provided Methods§
Sourcefn write_string_list(
&mut self,
schema: &Schema,
values: &[String],
) -> Result<(), SerdeError>
fn write_string_list( &mut self, schema: &Schema, values: &[String], ) -> Result<(), SerdeError>
Writes a list of strings.
Sourcefn write_blob_list(
&mut self,
schema: &Schema,
values: &[Blob],
) -> Result<(), SerdeError>
fn write_blob_list( &mut self, schema: &Schema, values: &[Blob], ) -> Result<(), SerdeError>
Writes a list of blobs.
Sourcefn write_integer_list(
&mut self,
schema: &Schema,
values: &[i32],
) -> Result<(), SerdeError>
fn write_integer_list( &mut self, schema: &Schema, values: &[i32], ) -> Result<(), SerdeError>
Writes a list of integers.
Sourcefn write_long_list(
&mut self,
schema: &Schema,
values: &[i64],
) -> Result<(), SerdeError>
fn write_long_list( &mut self, schema: &Schema, values: &[i64], ) -> Result<(), SerdeError>
Writes a list of longs.
Sourcefn write_string_string_map(
&mut self,
schema: &Schema,
values: &HashMap<String, String>,
) -> Result<(), SerdeError>
fn write_string_string_map( &mut self, schema: &Schema, values: &HashMap<String, String>, ) -> Result<(), SerdeError>
Writes a map with string keys and string values.