Trait Deserializer

Source
pub trait Deserializer<'de>: Sized {
    type Error: Error;

Show 34 methods // Required methods fn deserialize_identifier<V>( self, size: ReadEnumSize, visitor: V, ) -> Result<V::Value, Self::Error> where V: Visitor<'de>; fn deserialize_class_index<V>( self, visitor: V, ) -> Result<V::Value, Self::Error> where V: Visitor<'de>; fn deserialize_void<V>(self, visitor: V) -> Result<V::Value, Self::Error> where V: Visitor<'de>; fn deserialize_bool<V>(self, visitor: V) -> Result<V::Value, Self::Error> where V: Visitor<'de>; fn deserialize_char<V>(self, visitor: V) -> Result<V::Value, Self::Error> where V: Visitor<'de>; fn deserialize_int8<V>(self, visitor: V) -> Result<V::Value, Self::Error> where V: Visitor<'de>; fn deserialize_uint8<V>(self, visitor: V) -> Result<V::Value, Self::Error> where V: Visitor<'de>; fn deserialize_int16<V>(self, visitor: V) -> Result<V::Value, Self::Error> where V: Visitor<'de>; fn deserialize_uint16<V>(self, visitor: V) -> Result<V::Value, Self::Error> where V: Visitor<'de>; fn deserialize_int32<V>(self, visitor: V) -> Result<V::Value, Self::Error> where V: Visitor<'de>; fn deserialize_uint32<V>(self, visitor: V) -> Result<V::Value, Self::Error> where V: Visitor<'de>; fn deserialize_int64<V>(self, visitor: V) -> Result<V::Value, Self::Error> where V: Visitor<'de>; fn deserialize_uint64<V>(self, visitor: V) -> Result<V::Value, Self::Error> where V: Visitor<'de>; fn deserialize_real<V>(self, visitor: V) -> Result<V::Value, Self::Error> where V: Visitor<'de>; fn deserialize_vector4<V>(self, visitor: V) -> Result<V::Value, Self::Error> where V: Visitor<'de>; fn deserialize_quaternion<V>( self, visitor: V, ) -> Result<V::Value, Self::Error> where V: Visitor<'de>; fn deserialize_matrix3<V>(self, visitor: V) -> Result<V::Value, Self::Error> where V: Visitor<'de>; fn deserialize_rotation<V>( self, visitor: V, ) -> Result<V::Value, Self::Error> where V: Visitor<'de>; fn deserialize_qstransform<V>( self, visitor: V, ) -> Result<V::Value, Self::Error> where V: Visitor<'de>; fn deserialize_matrix4<V>(self, visitor: V) -> Result<V::Value, Self::Error> where V: Visitor<'de>; fn deserialize_transform<V>( self, visitor: V, ) -> Result<V::Value, Self::Error> where V: Visitor<'de>; fn deserialize_pointer<V>(self, visitor: V) -> Result<V::Value, Self::Error> where V: Visitor<'de>; fn deserialize_array<V>(self, visitor: V) -> Result<V::Value, Self::Error> where V: Visitor<'de>; fn deserialize_fixed_array<V>( self, visitor: V, ) -> Result<V::Value, Self::Error> where V: Visitor<'de>; fn deserialize_class_index_seq<V>( self, visitor: V, ) -> Result<V::Value, Self::Error> where V: Visitor<'de>; fn deserialize_enum<V>( self, name: &'static str, variants: &'static [&'static str], visitor: V, ) -> Result<V::Value, Self::Error> where V: Visitor<'de>; fn deserialize_struct<V>( self, name: &'static str, fields: &'static [&'static str], visitor: V, ) -> Result<V::Value, Self::Error> where V: Visitor<'de>; fn deserialize_variant<V>(self, visitor: V) -> Result<V::Value, Self::Error> where V: Visitor<'de>; fn deserialize_cstring<V>(self, visitor: V) -> Result<V::Value, Self::Error> where V: Visitor<'de>; fn deserialize_ulong<V>(self, visitor: V) -> Result<V::Value, Self::Error> where V: Visitor<'de>; fn deserialize_flags<V>( self, size: ReadEnumSize, visitor: V, ) -> Result<V::Value, Self::Error> where V: Visitor<'de>; fn deserialize_half<V>(self, visitor: V) -> Result<V::Value, Self::Error> where V: Visitor<'de>; fn deserialize_stringptr<V>( self, visitor: V, ) -> Result<V::Value, Self::Error> where V: Visitor<'de>; // Provided method fn deserialize_key<V>(self, visitor: V) -> Result<V::Value, Self::Error> where V: Visitor<'de> { ... }
}
Expand description

Deserializer

Required Associated Types§

Source

type Error: Error

The error type that can be returned if some error occurs during deserialization.

Required Methods§

Source

fn deserialize_identifier<V>( self, size: ReadEnumSize, visitor: V, ) -> Result<V::Value, Self::Error>
where V: Visitor<'de>,

Hint that the Deserialize type is expecting the discriminant of an enum variant.

Source

fn deserialize_class_index<V>(self, visitor: V) -> Result<V::Value, Self::Error>
where V: Visitor<'de>,

Deserialize class index.

Source

fn deserialize_void<V>(self, visitor: V) -> Result<V::Value, Self::Error>
where V: Visitor<'de>,

Deserialize 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 deserialize_bool<V>(self, visitor: V) -> Result<V::Value, Self::Error>
where V: Visitor<'de>,

Deserialize a bool value.

Source

fn deserialize_char<V>(self, visitor: V) -> Result<V::Value, Self::Error>
where V: Visitor<'de>,

Deserialize an char value.

Source

fn deserialize_int8<V>(self, visitor: V) -> Result<V::Value, Self::Error>
where V: Visitor<'de>,

Deserialize 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 deserialize_i64.

Source

fn deserialize_uint8<V>(self, visitor: V) -> Result<V::Value, Self::Error>
where V: Visitor<'de>,

Deserialize an u8 value.

Source

fn deserialize_int16<V>(self, visitor: V) -> Result<V::Value, Self::Error>
where V: Visitor<'de>,

Deserialize an i16 value.

Source

fn deserialize_uint16<V>(self, visitor: V) -> Result<V::Value, Self::Error>
where V: Visitor<'de>,

Deserialize an u16 value.

Source

fn deserialize_int32<V>(self, visitor: V) -> Result<V::Value, Self::Error>
where V: Visitor<'de>,

Deserialize an i32 value.

Source

fn deserialize_uint32<V>(self, visitor: V) -> Result<V::Value, Self::Error>
where V: Visitor<'de>,

Deserialize an u32 value.

Source

fn deserialize_int64<V>(self, visitor: V) -> Result<V::Value, Self::Error>
where V: Visitor<'de>,

Deserialize an i64 value.

Source

fn deserialize_uint64<V>(self, visitor: V) -> Result<V::Value, Self::Error>
where V: Visitor<'de>,

Deserialize an u64 value.

Source

fn deserialize_real<V>(self, visitor: V) -> Result<V::Value, Self::Error>
where V: Visitor<'de>,

Deserialize an f32 value.

Source

fn deserialize_vector4<V>(self, visitor: V) -> Result<V::Value, Self::Error>
where V: Visitor<'de>,

Deserialize an Vector4 value.

Source

fn deserialize_quaternion<V>(self, visitor: V) -> Result<V::Value, Self::Error>
where V: Visitor<'de>,

Deserialize an Quaternion value.

Source

fn deserialize_matrix3<V>(self, visitor: V) -> Result<V::Value, Self::Error>
where V: Visitor<'de>,

Deserialize an Matrix3 value.

Source

fn deserialize_rotation<V>(self, visitor: V) -> Result<V::Value, Self::Error>
where V: Visitor<'de>,

Deserialize an Rotation value.

Source

fn deserialize_qstransform<V>(self, visitor: V) -> Result<V::Value, Self::Error>
where V: Visitor<'de>,

Deserialize an QsTransform value.

Source

fn deserialize_matrix4<V>(self, visitor: V) -> Result<V::Value, Self::Error>
where V: Visitor<'de>,

Deserialize an Matrix4 value.

Source

fn deserialize_transform<V>(self, visitor: V) -> Result<V::Value, Self::Error>
where V: Visitor<'de>,

Deserialize an Transform value.

Source

fn deserialize_pointer<V>(self, visitor: V) -> Result<V::Value, Self::Error>
where V: Visitor<'de>,

Deserialize an Pointer value.

Source

fn deserialize_array<V>(self, visitor: V) -> Result<V::Value, Self::Error>
where V: Visitor<'de>,

Deserialize an Array value.

Source

fn deserialize_fixed_array<V>(self, visitor: V) -> Result<V::Value, Self::Error>
where V: Visitor<'de>,

Deserialize an fixed array(e.g. [bool; 3]) value.

§Intention to separate methods

The methods for fixed size array(stack array) and hkArray binary data are separated because they have different metadata.

Source

fn deserialize_class_index_seq<V>( self, visitor: V, ) -> Result<V::Value, Self::Error>
where V: Visitor<'de>,

Deserialize a Class Index Array value.

Source

fn deserialize_enum<V>( self, name: &'static str, variants: &'static [&'static str], visitor: V, ) -> Result<V::Value, Self::Error>
where V: Visitor<'de>,

Deserialize an enum value.

Hint that the Deserialize type is expecting an enum value with a particular name and possible variants.

Source

fn deserialize_struct<V>( self, name: &'static str, fields: &'static [&'static str], visitor: V, ) -> Result<V::Value, Self::Error>
where V: Visitor<'de>,

Deserialize an Struct value.

Source

fn deserialize_variant<V>(self, visitor: V) -> Result<V::Value, Self::Error>
where V: Visitor<'de>,

Deserialize 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 deserialize_cstring<V>(self, visitor: V) -> Result<V::Value, Self::Error>
where V: Visitor<'de>,

Deserialize an CString value.

Source

fn deserialize_ulong<V>(self, visitor: V) -> Result<V::Value, Self::Error>
where V: Visitor<'de>,

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

Source

fn deserialize_flags<V>( self, size: ReadEnumSize, visitor: V, ) -> Result<V::Value, Self::Error>
where V: Visitor<'de>,

Deserialize an Flags value.

Hint that the Deserialize type is expecting flags value with a particular name and possible variants.

Source

fn deserialize_half<V>(self, visitor: V) -> Result<V::Value, Self::Error>
where V: Visitor<'de>,

Deserialize an Half(f16) value.

Source

fn deserialize_stringptr<V>(self, visitor: V) -> Result<V::Value, Self::Error>
where V: Visitor<'de>,

Deserialize an StringPtr value.

Provided Methods§

Source

fn deserialize_key<V>(self, visitor: V) -> Result<V::Value, Self::Error>
where V: Visitor<'de>,

Deserialize map key.

  • It is mainly called to deserialize the key of a field when implementing Deserialize of struct.
  • The most intended use is to parse XML name strings. The key part of <hkparam name="key">.

The default implementation does nothing.

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementors§

impl<'de> Deserializer<'de> for &mut BytesDeserializer<'de>

impl<'de> Deserializer<'de> for &mut XmlDeserializer<'de>