Trait serde::de::Deserializer
[−]
[src]
pub trait Deserializer { type Error: Error; fn deserialize<V>(&mut self, visitor: V) -> Result<V::Value, Self::Error>
where
V: Visitor; fn deserialize_bool<V>(
&mut self,
visitor: V
) -> Result<V::Value, Self::Error>
where
V: Visitor; fn deserialize_usize<V>(
&mut self,
visitor: V
) -> Result<V::Value, Self::Error>
where
V: Visitor; fn deserialize_u8<V>(&mut self, visitor: V) -> Result<V::Value, Self::Error>
where
V: Visitor; fn deserialize_u16<V>(
&mut self,
visitor: V
) -> Result<V::Value, Self::Error>
where
V: Visitor; fn deserialize_u32<V>(
&mut self,
visitor: V
) -> Result<V::Value, Self::Error>
where
V: Visitor; fn deserialize_u64<V>(
&mut self,
visitor: V
) -> Result<V::Value, Self::Error>
where
V: Visitor; fn deserialize_isize<V>(
&mut self,
visitor: V
) -> Result<V::Value, Self::Error>
where
V: Visitor; fn deserialize_i8<V>(&mut self, visitor: V) -> Result<V::Value, Self::Error>
where
V: Visitor; fn deserialize_i16<V>(
&mut self,
visitor: V
) -> Result<V::Value, Self::Error>
where
V: Visitor; fn deserialize_i32<V>(
&mut self,
visitor: V
) -> Result<V::Value, Self::Error>
where
V: Visitor; fn deserialize_i64<V>(
&mut self,
visitor: V
) -> Result<V::Value, Self::Error>
where
V: Visitor; fn deserialize_f32<V>(
&mut self,
visitor: V
) -> Result<V::Value, Self::Error>
where
V: Visitor; fn deserialize_f64<V>(
&mut self,
visitor: V
) -> Result<V::Value, Self::Error>
where
V: Visitor; fn deserialize_char<V>(
&mut self,
visitor: V
) -> Result<V::Value, Self::Error>
where
V: Visitor; fn deserialize_str<V>(
&mut self,
visitor: V
) -> Result<V::Value, Self::Error>
where
V: Visitor; fn deserialize_string<V>(
&mut self,
visitor: V
) -> Result<V::Value, Self::Error>
where
V: Visitor; fn deserialize_unit<V>(
&mut self,
visitor: V
) -> Result<V::Value, Self::Error>
where
V: Visitor; fn deserialize_option<V>(
&mut self,
visitor: V
) -> Result<V::Value, Self::Error>
where
V: Visitor; fn deserialize_seq<V>(
&mut self,
visitor: V
) -> Result<V::Value, Self::Error>
where
V: Visitor; fn deserialize_seq_fixed_size<V>(
&mut self,
len: usize,
visitor: V
) -> Result<V::Value, Self::Error>
where
V: Visitor; fn deserialize_bytes<V>(
&mut self,
visitor: V
) -> Result<V::Value, Self::Error>
where
V: Visitor; fn deserialize_map<V>(
&mut self,
visitor: V
) -> Result<V::Value, Self::Error>
where
V: Visitor; fn deserialize_unit_struct<V>(
&mut self,
name: &'static str,
visitor: V
) -> Result<V::Value, Self::Error>
where
V: Visitor; fn deserialize_newtype_struct<V>(
&mut self,
name: &'static str,
visitor: V
) -> Result<V::Value, Self::Error>
where
V: Visitor; fn deserialize_tuple_struct<V>(
&mut self,
name: &'static str,
len: usize,
visitor: V
) -> Result<V::Value, Self::Error>
where
V: Visitor; fn deserialize_struct<V>(
&mut self,
name: &'static str,
fields: &'static [&'static str],
visitor: V
) -> Result<V::Value, Self::Error>
where
V: Visitor; fn deserialize_struct_field<V>(
&mut self,
visitor: V
) -> Result<V::Value, Self::Error>
where
V: Visitor; fn deserialize_tuple<V>(
&mut self,
len: usize,
visitor: V
) -> Result<V::Value, Self::Error>
where
V: Visitor; fn deserialize_enum<V>(
&mut self,
name: &'static str,
variants: &'static [&'static str],
visitor: V
) -> Result<V::Value, Self::Error>
where
V: EnumVisitor; fn deserialize_ignored_any<V>(
&mut self,
visitor: V
) -> Result<V::Value, Self::Error>
where
V: Visitor; }
Deserializer
is a trait that can deserialize values by threading a Visitor
trait through a
value. It supports two entry point styles which enables different kinds of deserialization.
1) The deserialize
method. File formats like JSON embed the type of its construct in its file
format. This allows the Deserializer
to deserialize into a generic type like
json::Value
, which can represent all JSON types.
2) The deserialize_*
methods. File formats like bincode do not embed in its format how to
decode its values. It relies instead on the Deserialize
type to hint to the Deserializer
with the deserialize_*
methods how it should parse the next value. One downside though to
only supporting the deserialize_*
types is that it does not allow for deserializing into a
generic json::Value
-esque type.
Associated Types
Required Methods
fn deserialize<V>(&mut self, visitor: V) -> Result<V::Value, Self::Error> where
V: Visitor,
V: Visitor,
This method walks a visitor through a value as it is being deserialized.
fn deserialize_bool<V>(&mut self, visitor: V) -> Result<V::Value, Self::Error> where
V: Visitor,
V: Visitor,
This method hints that the Deserialize
type is expecting a bool
value.
fn deserialize_usize<V>(&mut self, visitor: V) -> Result<V::Value, Self::Error> where
V: Visitor,
V: Visitor,
This method hints that the Deserialize
type is expecting an usize
value.
A reasonable default is to forward to deserialize_u64
.
fn deserialize_u8<V>(&mut self, visitor: V) -> Result<V::Value, Self::Error> where
V: Visitor,
V: Visitor,
This method hints that the Deserialize
type is expecting an u8
value.
A reasonable default is to forward to deserialize_u64
.
fn deserialize_u16<V>(&mut self, visitor: V) -> Result<V::Value, Self::Error> where
V: Visitor,
V: Visitor,
This method hints that the Deserialize
type is expecting an u16
value.
A reasonable default is to forward to deserialize_u64
.
fn deserialize_u32<V>(&mut self, visitor: V) -> Result<V::Value, Self::Error> where
V: Visitor,
V: Visitor,
This method hints that the Deserialize
type is expecting an u32
value.
A reasonable default is to forward to deserialize_u64
.
fn deserialize_u64<V>(&mut self, visitor: V) -> Result<V::Value, Self::Error> where
V: Visitor,
V: Visitor,
This method hints that the Deserialize
type is expecting an u64
value.
fn deserialize_isize<V>(&mut self, visitor: V) -> Result<V::Value, Self::Error> where
V: Visitor,
V: Visitor,
This method hints that the Deserialize
type is expecting an isize
value.
A reasonable default is to forward to deserialize_i64
.
fn deserialize_i8<V>(&mut self, visitor: V) -> Result<V::Value, Self::Error> where
V: Visitor,
V: Visitor,
This method hints that the Deserialize
type is expecting an i8
value.
A reasonable default is to forward to deserialize_i64
.
fn deserialize_i16<V>(&mut self, visitor: V) -> Result<V::Value, Self::Error> where
V: Visitor,
V: Visitor,
This method hints that the Deserialize
type is expecting an i16
value.
A reasonable default is to forward to deserialize_i64
.
fn deserialize_i32<V>(&mut self, visitor: V) -> Result<V::Value, Self::Error> where
V: Visitor,
V: Visitor,
This method hints that the Deserialize
type is expecting an i32
value.
A reasonable default is to forward to deserialize_i64
.
fn deserialize_i64<V>(&mut self, visitor: V) -> Result<V::Value, Self::Error> where
V: Visitor,
V: Visitor,
This method hints that the Deserialize
type is expecting an i64
value.
fn deserialize_f32<V>(&mut self, visitor: V) -> Result<V::Value, Self::Error> where
V: Visitor,
V: Visitor,
This method hints that the Deserialize
type is expecting a f32
value.
A reasonable default is to forward to deserialize_f64
.
fn deserialize_f64<V>(&mut self, visitor: V) -> Result<V::Value, Self::Error> where
V: Visitor,
V: Visitor,
This method hints that the Deserialize
type is expecting a f64
value.
fn deserialize_char<V>(&mut self, visitor: V) -> Result<V::Value, Self::Error> where
V: Visitor,
V: Visitor,
This method hints that the Deserialize
type is expecting a char
value.
fn deserialize_str<V>(&mut self, visitor: V) -> Result<V::Value, Self::Error> where
V: Visitor,
V: Visitor,
This method hints that the Deserialize
type is expecting a &str
value.
fn deserialize_string<V>(&mut self, visitor: V) -> Result<V::Value, Self::Error> where
V: Visitor,
V: Visitor,
This method hints that the Deserialize
type is expecting a String
value.
fn deserialize_unit<V>(&mut self, visitor: V) -> Result<V::Value, Self::Error> where
V: Visitor,
V: Visitor,
This method hints that the Deserialize
type is expecting an unit
value.
fn deserialize_option<V>(&mut self, visitor: V) -> Result<V::Value, Self::Error> where
V: Visitor,
V: Visitor,
This method hints that the Deserialize
type is expecting an Option
value. This allows
deserializers that encode an optional value as a nullable value to convert the null value
into a None
, and a regular value as Some(value)
.
fn deserialize_seq<V>(&mut self, visitor: V) -> Result<V::Value, Self::Error> where
V: Visitor,
V: Visitor,
This method hints that the Deserialize
type is expecting a sequence value. This allows
deserializers to parse sequences that aren't tagged as sequences.
fn deserialize_seq_fixed_size<V>(
&mut self,
len: usize,
visitor: V
) -> Result<V::Value, Self::Error> where
V: Visitor,
&mut self,
len: usize,
visitor: V
) -> Result<V::Value, Self::Error> where
V: Visitor,
This method hints that the Deserialize
type is expecting a fixed size array. This allows
deserializers to parse arrays that aren't tagged as arrays.
fn deserialize_bytes<V>(&mut self, visitor: V) -> Result<V::Value, Self::Error> where
V: Visitor,
V: Visitor,
This method hints that the Deserialize
type is expecting a Vec<u8>
. This allows
deserializers that provide a custom byte vector serialization to properly deserialize the
type.
fn deserialize_map<V>(&mut self, visitor: V) -> Result<V::Value, Self::Error> where
V: Visitor,
V: Visitor,
This method hints that the Deserialize
type is expecting a map of values. This allows
deserializers to parse sequences that aren't tagged as maps.
fn deserialize_unit_struct<V>(
&mut self,
name: &'static str,
visitor: V
) -> Result<V::Value, Self::Error> where
V: Visitor,
&mut self,
name: &'static str,
visitor: V
) -> Result<V::Value, Self::Error> where
V: Visitor,
This method hints that the Deserialize
type is expecting a unit struct. This allows
deserializers to a unit struct that aren't tagged as a unit struct.
fn deserialize_newtype_struct<V>(
&mut self,
name: &'static str,
visitor: V
) -> Result<V::Value, Self::Error> where
V: Visitor,
&mut self,
name: &'static str,
visitor: V
) -> Result<V::Value, Self::Error> where
V: Visitor,
This method hints that the Deserialize
type is expecting a newtype struct. This allows
deserializers to a newtype struct that aren't tagged as a newtype struct.
A reasonable default is to simply deserialize the expected value directly.
fn deserialize_tuple_struct<V>(
&mut self,
name: &'static str,
len: usize,
visitor: V
) -> Result<V::Value, Self::Error> where
V: Visitor,
&mut self,
name: &'static str,
len: usize,
visitor: V
) -> Result<V::Value, Self::Error> where
V: Visitor,
This method hints that the Deserialize
type is expecting a tuple struct. This allows
deserializers to parse sequences that aren't tagged as sequences.
fn deserialize_struct<V>(
&mut self,
name: &'static str,
fields: &'static [&'static str],
visitor: V
) -> Result<V::Value, Self::Error> where
V: Visitor,
&mut self,
name: &'static str,
fields: &'static [&'static str],
visitor: V
) -> Result<V::Value, Self::Error> where
V: Visitor,
This method hints that the Deserialize
type is expecting a struct. This allows
deserializers to parse sequences that aren't tagged as maps.
fn deserialize_struct_field<V>(
&mut self,
visitor: V
) -> Result<V::Value, Self::Error> where
V: Visitor,
&mut self,
visitor: V
) -> Result<V::Value, Self::Error> where
V: Visitor,
This method hints that the Deserialize
type is expecting some sort of struct field
name. This allows deserializers to choose between &str, usize, or &[u8] to properly
deserialize a struct field.
fn deserialize_tuple<V>(
&mut self,
len: usize,
visitor: V
) -> Result<V::Value, Self::Error> where
V: Visitor,
&mut self,
len: usize,
visitor: V
) -> Result<V::Value, Self::Error> where
V: Visitor,
This method hints that the Deserialize
type is expecting a tuple value. This allows
deserializers that provide a custom tuple serialization to properly deserialize the type.
fn deserialize_enum<V>(
&mut self,
name: &'static str,
variants: &'static [&'static str],
visitor: V
) -> Result<V::Value, Self::Error> where
V: EnumVisitor,
&mut self,
name: &'static str,
variants: &'static [&'static str],
visitor: V
) -> Result<V::Value, Self::Error> where
V: EnumVisitor,
This method hints that the Deserialize
type is expecting an enum value. This allows
deserializers that provide a custom enumeration serialization to properly deserialize the
type.
fn deserialize_ignored_any<V>(
&mut self,
visitor: V
) -> Result<V::Value, Self::Error> where
V: Visitor,
&mut self,
visitor: V
) -> Result<V::Value, Self::Error> where
V: Visitor,
This method hints that the Deserialize
type needs to deserialize a value whose type
doesn't matter because it is ignored.
Implementors
impl<E> Deserializer for UnitDeserializer<E> where
E: Error, type Error = E;impl<E> Deserializer for BoolDeserializer<E> where
E: Error, type Error = E;impl<E> Deserializer for I8Deserializer<E> where
E: Error, type Error = E;impl<E> Deserializer for I16Deserializer<E> where
E: Error, type Error = E;impl<E> Deserializer for I32Deserializer<E> where
E: Error, type Error = E;impl<E> Deserializer for I64Deserializer<E> where
E: Error, type Error = E;impl<E> Deserializer for IsizeDeserializer<E> where
E: Error, type Error = E;impl<E> Deserializer for U8Deserializer<E> where
E: Error, type Error = E;impl<E> Deserializer for U16Deserializer<E> where
E: Error, type Error = E;impl<E> Deserializer for U32Deserializer<E> where
E: Error, type Error = E;impl<E> Deserializer for U64Deserializer<E> where
E: Error, type Error = E;impl<E> Deserializer for UsizeDeserializer<E> where
E: Error, type Error = E;impl<E> Deserializer for F32Deserializer<E> where
E: Error, type Error = E;impl<E> Deserializer for F64Deserializer<E> where
E: Error, type Error = E;impl<E> Deserializer for CharDeserializer<E> where
E: Error, type Error = E;impl<'a, E> Deserializer for StrDeserializer<'a, E> where
E: Error, type Error = E;impl<E> Deserializer for StringDeserializer<E> where
E: Error, type Error = E;impl<'a, E> Deserializer for CowStrDeserializer<'a, E> where
E: Error, type Error = E;impl<I, T, E> Deserializer for SeqDeserializer<I, E> where
I: Iterator<Item = T>,
T: ValueDeserializer<E>,
E: Error, type Error = E;impl<V_, E> Deserializer for SeqVisitorDeserializer<V_, E> where
V_: SeqVisitor<Error = E>,
E: Error, type Error = E;impl<I, K, V, E> Deserializer for MapDeserializer<I, K, V, E> where
I: Iterator<Item = (K, V)>,
K: ValueDeserializer<E>,
V: ValueDeserializer<E>,
E: Error, type Error = E;impl<V_, E> Deserializer for MapVisitorDeserializer<V_, E> where
V_: MapVisitor<Error = E>,
E: Error, type Error = E;impl<'a, E> Deserializer for BytesDeserializer<'a, E> where
E: Error, type Error = E;impl<E> Deserializer for ByteBufDeserializer<E> where
E: Error, type Error = E;