VariantVisitor

Trait VariantVisitor 

Source
pub trait VariantVisitor {
    type Error: Error;

    // Required method
    fn visit_variant<V>(&mut self) -> Result<V, Self::Error>
       where V: Deserialize;

    // Provided methods
    fn visit_unit(&mut self) -> Result<(), Self::Error> { ... }
    fn visit_newtype<T>(&mut self) -> Result<T, Self::Error>
       where T: Deserialize { ... }
    fn visit_tuple<V>(
        &mut self,
        _len: usize,
        _visitor: V,
    ) -> Result<<V as Visitor>::Value, Self::Error>
       where V: Visitor { ... }
    fn visit_struct<V>(
        &mut self,
        _fields: &'static [&'static str],
        _visitor: V,
    ) -> Result<<V as Visitor>::Value, Self::Error>
       where V: Visitor { ... }
}
Expand description

VariantVisitor is a visitor that is created by the Deserializer and passed to the Deserialize in order to deserialize a specific enum variant.

Required Associated Types§

Source

type Error: Error

The error type that can be returned if some error occurs during deserialization.

Required Methods§

Source

fn visit_variant<V>(&mut self) -> Result<V, Self::Error>
where V: Deserialize,

visit_variant is called to identify which variant to deserialize.

Provided Methods§

Source

fn visit_unit(&mut self) -> Result<(), Self::Error>

visit_unit is called when deserializing a variant with no values.

Source

fn visit_newtype<T>(&mut self) -> Result<T, Self::Error>
where T: Deserialize,

visit_newtype is called when deserializing a variant with a single value. By default this uses the visit_tuple method to deserialize the value.

Source

fn visit_tuple<V>( &mut self, _len: usize, _visitor: V, ) -> Result<<V as Visitor>::Value, Self::Error>
where V: Visitor,

visit_tuple is called when deserializing a tuple-like variant.

Source

fn visit_struct<V>( &mut self, _fields: &'static [&'static str], _visitor: V, ) -> Result<<V as Visitor>::Value, Self::Error>
where V: Visitor,

visit_struct is called when deserializing a struct-like variant.

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementations on Foreign Types§

Source§

impl<'a, T> VariantVisitor for &'a mut T
where T: VariantVisitor,

Source§

type Error = <T as VariantVisitor>::Error

Source§

fn visit_variant<V>(&mut self) -> Result<V, <T as VariantVisitor>::Error>
where V: Deserialize,

Source§

fn visit_unit(&mut self) -> Result<(), <T as VariantVisitor>::Error>

Source§

fn visit_newtype<D>(&mut self) -> Result<D, <T as VariantVisitor>::Error>
where D: Deserialize,

Source§

fn visit_tuple<V>( &mut self, len: usize, visitor: V, ) -> Result<<V as Visitor>::Value, <T as VariantVisitor>::Error>
where V: Visitor,

Source§

fn visit_struct<V>( &mut self, fields: &'static [&'static str], visitor: V, ) -> Result<<V as Visitor>::Value, <T as VariantVisitor>::Error>
where V: Visitor,

Implementors§

Source§

impl<'a, E> VariantVisitor for StrDeserializer<'a, E>
where E: Error,

Source§

type Error = E

Source§

impl<'a, E> VariantVisitor for StringDeserializer<E>
where E: Error,

Available on crate features std or collections only.
Source§

type Error = E