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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
_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
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
_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
_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
_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
_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
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
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
impl Deserializer for BoolDeserializer
impl Deserializer for I8Deserializer
impl Deserializer for I16Deserializer
impl Deserializer for I32Deserializer
impl Deserializer for I64Deserializer
impl Deserializer for IsizeDeserializer
impl Deserializer for U8Deserializer
impl Deserializer for U16Deserializer
impl Deserializer for U32Deserializer
impl Deserializer for U64Deserializer
impl Deserializer for UsizeDeserializer
impl Deserializer for F32Deserializer
impl Deserializer for F64Deserializer
impl Deserializer for CharDeserializer
impl<'a> Deserializer for StrDeserializer<'a>
impl Deserializer for StringDeserializer
impl<I, T> Deserializer for SeqDeserializer<I> where I: Iterator<Item = T>,
T: ValueDeserializerimpl<I, K, V> Deserializer for MapDeserializer<I, K, V> where I: Iterator<Item = (K, V)>,
K: ValueDeserializer,
V: ValueDeserializerimpl<'a> Deserializer for BytesDeserializer<'a>
impl Deserializer for ByteBufDeserializer