Trait serde::de::Deserializer [−][src]
pub trait Deserializer { type Error: Error; fn visit<V>(&mut self, visitor: V) -> Result<V::Value, Self::Error>
where
V: Visitor; fn visit_bool<V>(&mut self, visitor: V) -> Result<V::Value, Self::Error>
where
V: Visitor, { ... } fn visit_usize<V>(&mut self, visitor: V) -> Result<V::Value, Self::Error>
where
V: Visitor, { ... } fn visit_u8<V>(&mut self, visitor: V) -> Result<V::Value, Self::Error>
where
V: Visitor, { ... } fn visit_u16<V>(&mut self, visitor: V) -> Result<V::Value, Self::Error>
where
V: Visitor, { ... } fn visit_u32<V>(&mut self, visitor: V) -> Result<V::Value, Self::Error>
where
V: Visitor, { ... } fn visit_u64<V>(&mut self, visitor: V) -> Result<V::Value, Self::Error>
where
V: Visitor, { ... } fn visit_isize<V>(&mut self, visitor: V) -> Result<V::Value, Self::Error>
where
V: Visitor, { ... } fn visit_i8<V>(&mut self, visitor: V) -> Result<V::Value, Self::Error>
where
V: Visitor, { ... } fn visit_i16<V>(&mut self, visitor: V) -> Result<V::Value, Self::Error>
where
V: Visitor, { ... } fn visit_i32<V>(&mut self, visitor: V) -> Result<V::Value, Self::Error>
where
V: Visitor, { ... } fn visit_i64<V>(&mut self, visitor: V) -> Result<V::Value, Self::Error>
where
V: Visitor, { ... } fn visit_f32<V>(&mut self, visitor: V) -> Result<V::Value, Self::Error>
where
V: Visitor, { ... } fn visit_f64<V>(&mut self, visitor: V) -> Result<V::Value, Self::Error>
where
V: Visitor, { ... } fn visit_char<V>(&mut self, visitor: V) -> Result<V::Value, Self::Error>
where
V: Visitor, { ... } fn visit_str<V>(&mut self, visitor: V) -> Result<V::Value, Self::Error>
where
V: Visitor, { ... } fn visit_string<V>(&mut self, visitor: V) -> Result<V::Value, Self::Error>
where
V: Visitor, { ... } fn visit_unit<V>(&mut self, visitor: V) -> Result<V::Value, Self::Error>
where
V: Visitor, { ... } fn visit_option<V>(&mut self, visitor: V) -> Result<V::Value, Self::Error>
where
V: Visitor, { ... } fn visit_seq<V>(&mut self, visitor: V) -> Result<V::Value, Self::Error>
where
V: Visitor, { ... } fn visit_map<V>(&mut self, visitor: V) -> Result<V::Value, Self::Error>
where
V: Visitor, { ... } fn visit_unit_struct<V>(
&mut self,
_name: &'static str,
visitor: V
) -> Result<V::Value, Self::Error>
where
V: Visitor, { ... } fn visit_newtype_struct<V>(
&mut self,
name: &'static str,
visitor: V
) -> Result<V::Value, Self::Error>
where
V: Visitor, { ... } fn visit_tuple_struct<V>(
&mut self,
_name: &'static str,
len: usize,
visitor: V
) -> Result<V::Value, Self::Error>
where
V: Visitor, { ... } fn visit_struct<V>(
&mut self,
_name: &'static str,
_fields: &'static [&'static str],
visitor: V
) -> Result<V::Value, Self::Error>
where
V: Visitor, { ... } fn visit_tuple<V>(
&mut self,
_len: usize,
visitor: V
) -> Result<V::Value, Self::Error>
where
V: Visitor, { ... } fn visit_enum<V>(
&mut self,
_enum: &'static str,
_variants: &'static [&'static str],
_visitor: V
) -> Result<V::Value, Self::Error>
where
V: EnumVisitor, { ... } fn visit_bytes<V>(&mut self, visitor: V) -> Result<V::Value, Self::Error>
where
V: Visitor, { ... } fn visit_struct_field<V>(
&mut self,
visitor: V
) -> Result<V::Value, Self::Error>
where
V: Visitor, { ... } fn format() -> &'static str { ... } }
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.
-
The
visit
method. File formats like JSON embed the type of it's construct in it's file format. This allows theDeserializer
to deserialize into a generic type likejson::Value
, which can represent all JSON types. -
The
visit_*
methods. File formats like bincode do not embed in it's format how to decode it's values. It relies instead on theDeserialize
type to hint to theDeserializer
with thevisit_*
methods how it should parse the next value. One downside though to only supporting thevisit_*
types is that it does not allow for deserializing into a genericjson::Value
-esque type.
Associated Types
Required Methods
fn visit<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.
Provided Methods
fn visit_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 visit_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.
fn visit_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.
fn visit_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.
fn visit_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.
fn visit_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 visit_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.
fn visit_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.
fn visit_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.
fn visit_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.
fn visit_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 visit_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.
fn visit_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 visit_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 visit_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 visit_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 visit_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 visit_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 visit_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 visit_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 visit_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 visit_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.
fn visit_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 visit_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 visit_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 visit_enum<V>(
&mut self,
_enum: &'static str,
_variants: &'static [&'static str],
_visitor: V
) -> Result<V::Value, Self::Error> where
V: EnumVisitor,
&mut self,
_enum: &'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 visit_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 visit_struct_field<V>(&mut self, visitor: V) -> Result<V::Value, Self::Error> where
V: Visitor,
V: Visitor,
This method hints that the Deserialize
type is expecting some sort of struct key mapping.
This allows deserializers to choose between &str, usize, or &[u8] to properly deserialize a
struct key.
fn format() -> &'static str
Specify a format string for the deserializer.
The deserializer format is used to determine which format specific field attributes should be used with the deserializer.
Implementors
impl Deserializer for UnitDeserializer type Error = Error;
impl Deserializer for BoolDeserializer type Error = Error;
impl Deserializer for I8Deserializer type Error = Error;
impl Deserializer for I16Deserializer type Error = Error;
impl Deserializer for I32Deserializer type Error = Error;
impl Deserializer for I64Deserializer type Error = Error;
impl Deserializer for IsizeDeserializer type Error = Error;
impl Deserializer for U8Deserializer type Error = Error;
impl Deserializer for U16Deserializer type Error = Error;
impl Deserializer for U32Deserializer type Error = Error;
impl Deserializer for U64Deserializer type Error = Error;
impl Deserializer for UsizeDeserializer type Error = Error;
impl Deserializer for F32Deserializer type Error = Error;
impl Deserializer for F64Deserializer type Error = Error;
impl Deserializer for CharDeserializer type Error = Error;
impl<'a> Deserializer for StrDeserializer<'a> type Error = Error;
impl Deserializer for StringDeserializer type Error = Error;
impl<I, T> Deserializer for SeqDeserializer<I> where
I: Iterator<Item = T>,
T: ValueDeserializer, type Error = Error;impl<I, K, V> Deserializer for MapDeserializer<I, K, V> where
I: Iterator<Item = (K, V)>,
K: ValueDeserializer,
V: ValueDeserializer, type Error = Error;impl<'a> Deserializer for BytesDeserializer<'a> type Error = Error;
impl Deserializer for ByteBufDeserializer type Error = Error;