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_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 theSERIALIZE_IGNORED
flag 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.