Trait serde::de::VariantVisitor  
                   
                       [−]
                   
               [src]
pub trait VariantVisitor: Sized {
    type Error: Error;
    fn visit_unit(self) -> Result<(), Self::Error>;
    fn visit_newtype_seed<T>(self, seed: T) -> Result<T::Value, Self::Error>
    where
        T: DeserializeSeed;
    fn visit_tuple<V>(
        self, 
        len: usize, 
        visitor: V
    ) -> Result<V::Value, Self::Error>
    where
        V: Visitor;
    fn visit_struct<V>(
        self, 
        fields: &'static [&'static str], 
        visitor: V
    ) -> Result<V::Value, Self::Error>
    where
        V: Visitor;
    fn visit_newtype<T>(self) -> Result<T, Self::Error>
    where
        T: Deserialize,
    { ... }
}VariantVisitor is a visitor that is created by the Deserializer and
passed to the Deserialize to deserialize the content of a particular enum
variant.
Associated Types
type Error: Error
The error type that can be returned if some error occurs during
deserialization. Must match the error type of our EnumVisitor.
Required Methods
fn visit_unit(self) -> Result<(), Self::Error>
Called when deserializing a variant with no values.
If the data contains a different type of variant, the following
invalid_type error should be constructed:
fn visit_unit(self) -> Result<(), Self::Error> { // What the data actually contained; suppose it is a tuple variant. let unexp = Unexpected::TupleVariant; Err(de::Error::invalid_type(unexp, &"unit variant")) }
fn visit_newtype_seed<T>(self, seed: T) -> Result<T::Value, Self::Error> where
    T: DeserializeSeed, 
T: DeserializeSeed,
Called when deserializing a variant with a single value.
Deserialize implementations should typically use
VariantVisitor::visit_newtype instead.
If the data contains a different type of variant, the following
invalid_type error should be constructed:
fn visit_newtype_seed<T>(self, _seed: T) -> Result<T::Value, Self::Error> where T: de::DeserializeSeed { // What the data actually contained; suppose it is a unit variant. let unexp = Unexpected::UnitVariant; Err(de::Error::invalid_type(unexp, &"newtype variant")) }
fn visit_tuple<V>(self, len: usize, visitor: V) -> Result<V::Value, Self::Error> where
    V: Visitor, 
V: Visitor,
Called when deserializing a tuple-like variant.
The len is the number of fields expected in the tuple variant.
If the data contains a different type of variant, the following
invalid_type error should be constructed:
fn visit_tuple<V>(self, _len: usize, _visitor: V) -> Result<V::Value, Self::Error> where V: Visitor { // What the data actually contained; suppose it is a unit variant. let unexp = Unexpected::UnitVariant; Err(Error::invalid_type(unexp, &"tuple variant")) }
fn visit_struct<V>(
    self, 
    fields: &'static [&'static str], 
    visitor: V
) -> Result<V::Value, Self::Error> where
    V: Visitor, 
self,
fields: &'static [&'static str],
visitor: V
) -> Result<V::Value, Self::Error> where
V: Visitor,
Called when deserializing a struct-like variant.
The fields are the names of the fields of the struct variant.
If the data contains a different type of variant, the following
invalid_type error should be constructed:
fn visit_struct<V>(self, _fields: &'static [&'static str], _visitor: V) -> Result<V::Value, Self::Error> where V: Visitor { // What the data actually contained; suppose it is a unit variant. let unexp = Unexpected::UnitVariant; Err(Error::invalid_type(unexp, &"struct variant")) }
Provided Methods
fn visit_newtype<T>(self) -> Result<T, Self::Error> where
    T: Deserialize, 
T: Deserialize,
Called when deserializing a variant with a single value.
This method exists as a convenience for Deserialize implementations.
VariantVisitor implementations should not override the default
behavior.