ShapeSerializer

Trait ShapeSerializer 

Source
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§

Source

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 serialized
  • value - The structure to serialize
Source

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 serialized
  • write_elements - Callback that writes the list elements
Source

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 serialized
  • write_entries - Callback that writes the map entries
Source

fn write_boolean( &mut self, schema: &Schema, value: bool, ) -> Result<(), SerdeError>

Writes a boolean value.

Source

fn write_byte(&mut self, schema: &Schema, value: i8) -> Result<(), SerdeError>

Writes a byte (i8) value.

Source

fn write_short(&mut self, schema: &Schema, value: i16) -> Result<(), SerdeError>

Writes a short (i16) value.

Source

fn write_integer( &mut self, schema: &Schema, value: i32, ) -> Result<(), SerdeError>

Writes an integer (i32) value.

Source

fn write_long(&mut self, schema: &Schema, value: i64) -> Result<(), SerdeError>

Writes a long (i64) value.

Source

fn write_float(&mut self, schema: &Schema, value: f32) -> Result<(), SerdeError>

Writes a float (f32) value.

Source

fn write_double( &mut self, schema: &Schema, value: f64, ) -> Result<(), SerdeError>

Writes a double (f64) value.

Source

fn write_big_integer( &mut self, schema: &Schema, value: &BigInteger, ) -> Result<(), SerdeError>

Writes a big integer value.

Source

fn write_big_decimal( &mut self, schema: &Schema, value: &BigDecimal, ) -> Result<(), SerdeError>

Writes a big decimal value.

Source

fn write_string( &mut self, schema: &Schema, value: &str, ) -> Result<(), SerdeError>

Writes a string value.

Source

fn write_blob( &mut self, schema: &Schema, value: &Blob, ) -> Result<(), SerdeError>

Writes a blob (byte array) value.

Source

fn write_timestamp( &mut self, schema: &Schema, value: &DateTime, ) -> Result<(), SerdeError>

Writes a timestamp value.

Source

fn write_document( &mut self, schema: &Schema, value: &Document, ) -> Result<(), SerdeError>

Writes a document value.

Source

fn write_null(&mut self, schema: &Schema) -> Result<(), SerdeError>

Writes a null value (for sparse collections).

Provided Methods§

Source

fn write_string_list( &mut self, schema: &Schema, values: &[String], ) -> Result<(), SerdeError>

Writes a list of strings.

Source

fn write_blob_list( &mut self, schema: &Schema, values: &[Blob], ) -> Result<(), SerdeError>

Writes a list of blobs.

Source

fn write_integer_list( &mut self, schema: &Schema, values: &[i32], ) -> Result<(), SerdeError>

Writes a list of integers.

Source

fn write_long_list( &mut self, schema: &Schema, values: &[i64], ) -> Result<(), SerdeError>

Writes a list of longs.

Source

fn write_string_string_map( &mut self, schema: &Schema, values: &HashMap<String, String>, ) -> Result<(), SerdeError>

Writes a map with string keys and string values.

Implementors§