Trait Serializer

Source
pub trait Serializer {
    type Ok;
    type Error: Error;
    type SerializeSeq: SerializeSeq<Ok = Self::Ok, Error = Self::Error>;
    type SerializeStruct: SerializeStruct<Ok = Self::Ok, Error = Self::Error>;
    type SerializeFlags: SerializeFlags<Ok = Self::Ok, Error = Self::Error>;

Show 28 methods // Required methods fn serialize_void(self, v: ()) -> Result<Self::Ok, Self::Error>; fn serialize_bool(self, v: bool) -> Result<Self::Ok, Self::Error>; fn serialize_char(self, v: char) -> Result<Self::Ok, Self::Error>; fn serialize_int8(self, v: i8) -> Result<Self::Ok, Self::Error>; fn serialize_uint8(self, v: u8) -> Result<Self::Ok, Self::Error>; fn serialize_int16(self, v: i16) -> Result<Self::Ok, Self::Error>; fn serialize_uint16(self, v: u16) -> Result<Self::Ok, Self::Error>; fn serialize_int32(self, v: i32) -> Result<Self::Ok, Self::Error>; fn serialize_uint32(self, v: u32) -> Result<Self::Ok, Self::Error>; fn serialize_int64(self, v: i64) -> Result<Self::Ok, Self::Error>; fn serialize_uint64(self, v: u64) -> Result<Self::Ok, Self::Error>; fn serialize_real(self, v: f32) -> Result<Self::Ok, Self::Error>; fn serialize_vector4(self, v: &Vector4) -> Result<Self::Ok, Self::Error>; fn serialize_quaternion( self, v: &Quaternion, ) -> Result<Self::Ok, Self::Error>; fn serialize_matrix3(self, v: &Matrix3) -> Result<Self::Ok, Self::Error>; fn serialize_rotation(self, v: &Rotation) -> Result<Self::Ok, Self::Error>; fn serialize_qstransform( self, v: &QsTransform, ) -> Result<Self::Ok, Self::Error>; fn serialize_matrix4(self, v: &Matrix4) -> Result<Self::Ok, Self::Error>; fn serialize_transform(self, v: &Transform) -> Result<Self::Ok, Self::Error>; fn serialize_pointer(self, v: Pointer) -> Result<Self::Ok, Self::Error>; fn serialize_array( self, len: Option<usize>, ) -> Result<Self::SerializeSeq, Self::Error>; fn serialize_struct( self, name: &'static str, class_meta: Option<(Pointer, Signature)>, sizes: (u64, u64), ) -> Result<Self::SerializeStruct, Self::Error>; fn serialize_variant(self, v: &Variant) -> Result<Self::Ok, Self::Error>; fn serialize_cstring(self, v: &CString<'_>) -> Result<Self::Ok, Self::Error>; fn serialize_ulong(self, v: Ulong) -> Result<Self::Ok, Self::Error>; fn serialize_enum_flags(self) -> Result<Self::SerializeFlags, Self::Error>; fn serialize_half(self, v: f16) -> Result<Self::Ok, Self::Error>; fn serialize_stringptr( self, v: &StringPtr<'_>, ) -> Result<Self::Ok, Self::Error>;
}
Expand description

A data format that can serialize any data structure supported by Serde.

The role of this trait is to define the serialization half of the [Serde data model], which is a way to categorize every Rust data structure into one of 29 possible types. Each method of the Serializer trait corresponds to one of the types of the data model.

Implementations of Serialize map themselves into this data model by invoking exactly one of the Serializer methods.

Required Associated Types§

Source

type Ok

The output type produced by this Serializer during successful serialization. Most serializers that produce text or binary output should set Ok = () and serialize into an io::Write or buffer contained within the Serializer instance. Serializers that build in-memory data structures may be simplified by using Ok to propagate the data structure around.

Source

type Error: Error

The error type when some error occurs during serialization.

Source

type SerializeSeq: SerializeSeq<Ok = Self::Ok, Error = Self::Error>

Type returned from serialize_seq for serializing the content of the sequence.

Source

type SerializeStruct: SerializeStruct<Ok = Self::Ok, Error = Self::Error>

Source

type SerializeFlags: SerializeFlags<Ok = Self::Ok, Error = Self::Error>

Type returned from serialize_enum_flags for serializing the content of the struct variant.

Required Methods§

Source

fn serialize_void(self, v: ()) -> Result<Self::Ok, Self::Error>

Serialize a Void value.

No type information.

This is often used to fill in generics elements with types for which generics are not used.

  • hkArray<hkBool> -> vtype: TYPE_ARRAY, vsubtype: TYPE_BOOL
  • hkBool -> vtype: TYPE_BOOL, vsubtype: TYPE_VOID`
  • There is also a pattern hkArray<void>. The type information is unknown, but this member always contains the SERIALIZE_IGNORED flag and can be skipped.
Source

fn serialize_bool(self, v: bool) -> Result<Self::Ok, Self::Error>

Serialize a bool value.

Source

fn serialize_char(self, v: char) -> Result<Self::Ok, Self::Error>

Serialize an char value.

Source

fn serialize_int8(self, v: i8) -> Result<Self::Ok, Self::Error>

Serialize an i8 value.

If the format does not differentiate between i8 and i64, a reasonable implementation would be to cast the value to i64 and forward to serialize_i64.

Source

fn serialize_uint8(self, v: u8) -> Result<Self::Ok, Self::Error>

Serialize an u8 value.

Source

fn serialize_int16(self, v: i16) -> Result<Self::Ok, Self::Error>

Serialize an i16 value.

Source

fn serialize_uint16(self, v: u16) -> Result<Self::Ok, Self::Error>

Serialize an u16 value.

Source

fn serialize_int32(self, v: i32) -> Result<Self::Ok, Self::Error>

Serialize an i32 value.

Source

fn serialize_uint32(self, v: u32) -> Result<Self::Ok, Self::Error>

Serialize an u32 value.

Source

fn serialize_int64(self, v: i64) -> Result<Self::Ok, Self::Error>

Serialize an u64 value.

Source

fn serialize_uint64(self, v: u64) -> Result<Self::Ok, Self::Error>

Serialize an i64 value.

Source

fn serialize_real(self, v: f32) -> Result<Self::Ok, Self::Error>

Serialize an f32 value.

Source

fn serialize_vector4(self, v: &Vector4) -> Result<Self::Ok, Self::Error>

Serialize an Vector4 value.

Source

fn serialize_quaternion(self, v: &Quaternion) -> Result<Self::Ok, Self::Error>

Serialize an Quaternion value.

Source

fn serialize_matrix3(self, v: &Matrix3) -> Result<Self::Ok, Self::Error>

Serialize an Matrix3 value.

Source

fn serialize_rotation(self, v: &Rotation) -> Result<Self::Ok, Self::Error>

Serialize an Rotation value.

Source

fn serialize_qstransform(self, v: &QsTransform) -> Result<Self::Ok, Self::Error>

Serialize an QsTransform value.

Source

fn serialize_matrix4(self, v: &Matrix4) -> Result<Self::Ok, Self::Error>

Serialize an Matrix4 value.

Source

fn serialize_transform(self, v: &Transform) -> Result<Self::Ok, Self::Error>

Serialize an Transform value.

Source

fn serialize_pointer(self, v: Pointer) -> Result<Self::Ok, Self::Error>

Serialize an Pointer value.

Source

fn serialize_array( self, len: Option<usize>, ) -> Result<Self::SerializeSeq, Self::Error>

Serialize an Array value.

Source

fn serialize_struct( self, name: &'static str, class_meta: Option<(Pointer, Signature)>, sizes: (u64, u64), ) -> Result<Self::SerializeStruct, Self::Error>

Serialize an Struct value.

sizes: C++ class size (x86, x86_64)

Source

fn serialize_variant(self, v: &Variant) -> Result<Self::Ok, Self::Error>

Serialize an Variant value.

§Note

Never used(In the 2010 Havok classes)

hkVariant is a structure with two pointers, but its identity is unknown, so u128([u64; 2]) of binary data is used as an argument instead. (If it is 32bit, you would need to cast it to u64([u32;2]).)

Source

fn serialize_cstring(self, v: &CString<'_>) -> Result<Self::Ok, Self::Error>

Serialize an CString value.

Source

fn serialize_ulong(self, v: Ulong) -> Result<Self::Ok, Self::Error>

Serialize an ULong(pointer size(u32 or u64)) value.

Source

fn serialize_enum_flags(self) -> Result<Self::SerializeFlags, Self::Error>

Serialize an enum or Flags value.

Source

fn serialize_half(self, v: f16) -> Result<Self::Ok, Self::Error>

Serialize an Half(f16) value.

Source

fn serialize_stringptr(self, v: &StringPtr<'_>) -> Result<Self::Ok, Self::Error>

Serialize an StringPtr value.

Implementors§

impl<'a> Serializer for &'a mut ByteSerializer