Trait serde::de::Visitor [] [src]

pub trait Visitor: Sized {
    type Value;
    fn expecting(&self, formatter: &mut Formatter) -> Result;

    fn visit_bool<E>(self, v: bool) -> Result<Self::Value, E> where E: Error { ... }
    fn visit_isize<E>(self, v: isize) -> Result<Self::Value, E> where E: Error { ... }
    fn visit_i8<E>(self, v: i8) -> Result<Self::Value, E> where E: Error { ... }
    fn visit_i16<E>(self, v: i16) -> Result<Self::Value, E> where E: Error { ... }
    fn visit_i32<E>(self, v: i32) -> Result<Self::Value, E> where E: Error { ... }
    fn visit_i64<E>(self, v: i64) -> Result<Self::Value, E> where E: Error { ... }
    fn visit_usize<E>(self, v: usize) -> Result<Self::Value, E> where E: Error { ... }
    fn visit_u8<E>(self, v: u8) -> Result<Self::Value, E> where E: Error { ... }
    fn visit_u16<E>(self, v: u16) -> Result<Self::Value, E> where E: Error { ... }
    fn visit_u32<E>(self, v: u32) -> Result<Self::Value, E> where E: Error { ... }
    fn visit_u64<E>(self, v: u64) -> Result<Self::Value, E> where E: Error { ... }
    fn visit_f32<E>(self, v: f32) -> Result<Self::Value, E> where E: Error { ... }
    fn visit_f64<E>(self, v: f64) -> Result<Self::Value, E> where E: Error { ... }
    fn visit_char<E>(self, v: char) -> Result<Self::Value, E> where E: Error { ... }
    fn visit_str<E>(self, v: &str) -> Result<Self::Value, E> where E: Error { ... }
    fn visit_string<E>(self, v: String) -> Result<Self::Value, E> where E: Error { ... }
    fn visit_unit<E>(self) -> Result<Self::Value, E> where E: Error { ... }
    fn visit_none<E>(self) -> Result<Self::Value, E> where E: Error { ... }
    fn visit_some<D>(self, deserializer: D) -> Result<Self::Value, D::Error> where D: Deserializer { ... }
    fn visit_newtype_struct<D>(self,
                               deserializer: D)
                               -> Result<Self::Value, D::Error> where D: Deserializer { ... } fn visit_seq<V>(self, visitor: V) -> Result<Self::Value, V::Error> where V: SeqVisitor { ... } fn visit_map<V>(self, visitor: V) -> Result<Self::Value, V::Error> where V: MapVisitor { ... } fn visit_enum<V>(self, visitor: V) -> Result<Self::Value, V::Error> where V: EnumVisitor { ... } fn visit_bytes<E>(self, v: &[u8]) -> Result<Self::Value, E> where E: Error { ... } fn visit_byte_buf<E>(self, v: Vec<u8>) -> Result<Self::Value, E> where E: Error { ... } }

This trait represents a visitor that walks through a deserializer.

/// A visitor that deserializes a long string - a string containing at least
/// some minimum number of bytes.
struct LongString {
    min: usize,
}

impl Visitor for LongString {
    type Value = String;

    fn expecting(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
        write!(formatter, "a string containing at least {} bytes", self.min)
    }

    fn visit_str<E>(self, s: &str) -> Result<Self::Value, E>
        where E: Error
    {
        if s.len() >= self.min {
            Ok(s.to_owned())
        } else {
            Err(Error::invalid_value(Unexpected::Str(s), &self))
        }
    }
}

Associated Types

The value produced by this visitor.

Required Methods

Format a message stating what data this Visitor expects to receive.

This is used in error messages. The message should complete the sentence "This Visitor expects to receive ...", for example the message could be "an integer between 0 and 64". The message should not be capitalized and should not end with a period.

fn expecting(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
    write!(formatter, "an integer between 0 and {}", self.max)
}

Provided Methods

visit_bool deserializes a bool into a Value.

visit_isize deserializes a isize into a Value.

visit_i8 deserializes a i8 into a Value.

visit_i16 deserializes a i16 into a Value.

visit_i32 deserializes a i32 into a Value.

visit_i64 deserializes a i64 into a Value.

visit_usize deserializes a usize into a Value.

visit_u8 deserializes a u8 into a Value.

visit_u16 deserializes a u16 into a Value.

visit_u32 deserializes a u32 into a Value.

visit_u64 deserializes a u64 into a Value.

visit_f32 deserializes a f32 into a Value.

visit_f64 deserializes a f64 into a Value.

visit_char deserializes a char into a Value.

visit_str deserializes a &str into a Value.

visit_string deserializes a String into a Value. This allows a deserializer to avoid a copy if it is deserializing a string from a String type. By default it passes a &str to the visit_str method.

visit_unit deserializes a () into a Value.

visit_none deserializes a none value into a Value.

visit_some deserializes a value into a Value.

visit_newtype_struct deserializes a value into a Value.

visit_seq deserializes a SeqVisitor into a Value.

visit_map deserializes a MapVisitor into a Value.

visit_enum deserializes a EnumVisitor into a Value.

visit_bytes deserializes a &[u8] into a Value.

visit_byte_buf deserializes a Vec<u8> into a Value.

Implementors