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§
Sourcetype Ok
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.
Sourcetype SerializeSeq: SerializeSeq<Ok = Self::Ok, Error = Self::Error>
type SerializeSeq: SerializeSeq<Ok = Self::Ok, Error = Self::Error>
Type returned from serialize_seq for serializing the content of the
sequence.
Sourcetype SerializeStruct: SerializeStruct<Ok = Self::Ok, Error = Self::Error>
type SerializeStruct: SerializeStruct<Ok = Self::Ok, Error = Self::Error>
Sourcetype SerializeFlags: SerializeFlags<Ok = Self::Ok, Error = Self::Error>
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§
Sourcefn serialize_void(self, v: ()) -> Result<Self::Ok, Self::Error>
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_BOOLhkBool ->vtype:TYPE_BOOL,vsubtype:TYPE_VOID`- There is also a pattern
hkArray<void>. The type information is unknown, but this member always contains theSERIALIZE_IGNOREDflag and can be skipped.
Sourcefn serialize_int8(self, v: i8) -> Result<Self::Ok, Self::Error>
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.
Sourcefn serialize_vector4(self, v: &Vector4) -> Result<Self::Ok, Self::Error>
fn serialize_vector4(self, v: &Vector4) -> Result<Self::Ok, Self::Error>
Serialize an Vector4 value.
Sourcefn serialize_quaternion(self, v: &Quaternion) -> Result<Self::Ok, Self::Error>
fn serialize_quaternion(self, v: &Quaternion) -> Result<Self::Ok, Self::Error>
Serialize an Quaternion value.
Sourcefn serialize_matrix3(self, v: &Matrix3) -> Result<Self::Ok, Self::Error>
fn serialize_matrix3(self, v: &Matrix3) -> Result<Self::Ok, Self::Error>
Serialize an Matrix3 value.
Sourcefn serialize_rotation(self, v: &Rotation) -> Result<Self::Ok, Self::Error>
fn serialize_rotation(self, v: &Rotation) -> Result<Self::Ok, Self::Error>
Serialize an Rotation value.
Sourcefn serialize_qstransform(self, v: &QsTransform) -> Result<Self::Ok, Self::Error>
fn serialize_qstransform(self, v: &QsTransform) -> Result<Self::Ok, Self::Error>
Serialize an QsTransform value.
Sourcefn serialize_matrix4(self, v: &Matrix4) -> Result<Self::Ok, Self::Error>
fn serialize_matrix4(self, v: &Matrix4) -> Result<Self::Ok, Self::Error>
Serialize an Matrix4 value.
Sourcefn serialize_transform(self, v: &Transform) -> Result<Self::Ok, Self::Error>
fn serialize_transform(self, v: &Transform) -> Result<Self::Ok, Self::Error>
Serialize an Transform value.
Sourcefn serialize_pointer(self, v: Pointer) -> Result<Self::Ok, Self::Error>
fn serialize_pointer(self, v: Pointer) -> Result<Self::Ok, Self::Error>
Serialize an Pointer value.
Sourcefn serialize_array(
self,
len: Option<usize>,
) -> Result<Self::SerializeSeq, Self::Error>
fn serialize_array( self, len: Option<usize>, ) -> Result<Self::SerializeSeq, Self::Error>
Serialize an Array value.
Sourcefn serialize_struct(
self,
name: &'static str,
class_meta: Option<(Pointer, Signature)>,
sizes: (u64, u64),
) -> Result<Self::SerializeStruct, Self::Error>
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)
Sourcefn serialize_variant(self, v: &Variant) -> Result<Self::Ok, Self::Error>
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]).)
Sourcefn serialize_cstring(self, v: &CString<'_>) -> Result<Self::Ok, Self::Error>
fn serialize_cstring(self, v: &CString<'_>) -> Result<Self::Ok, Self::Error>
Serialize an CString value.
Sourcefn serialize_ulong(self, v: Ulong) -> Result<Self::Ok, Self::Error>
fn serialize_ulong(self, v: Ulong) -> Result<Self::Ok, Self::Error>
Serialize an ULong(pointer size(u32 or u64)) value.
Sourcefn serialize_enum_flags(self) -> Result<Self::SerializeFlags, Self::Error>
fn serialize_enum_flags(self) -> Result<Self::SerializeFlags, Self::Error>
Serialize an enum or Flags value.