MapVisitor

Trait MapVisitor 

Source
pub trait MapVisitor {
    type Error: Error;

    // Required methods
    fn visit_key_seed<K>(
        &mut self,
        seed: K,
    ) -> Result<Option<<K as DeserializeSeed>::Value>, Self::Error>
       where K: DeserializeSeed;
    fn visit_value_seed<V>(
        &mut self,
        seed: V,
    ) -> Result<<V as DeserializeSeed>::Value, Self::Error>
       where V: DeserializeSeed;

    // Provided methods
    fn visit_seed<K, V>(
        &mut self,
        kseed: K,
        vseed: V,
    ) -> Result<Option<(<K as DeserializeSeed>::Value, <V as DeserializeSeed>::Value)>, Self::Error>
       where K: DeserializeSeed,
             V: DeserializeSeed { ... }
    fn visit_key<K>(&mut self) -> Result<Option<K>, Self::Error>
       where K: Deserialize { ... }
    fn visit_value<V>(&mut self) -> Result<V, Self::Error>
       where V: Deserialize { ... }
    fn visit<K, V>(&mut self) -> Result<Option<(K, V)>, Self::Error>
       where K: Deserialize,
             V: Deserialize { ... }
    fn size_hint(&self) -> (usize, Option<usize>) { ... }
}
Expand description

MapVisitor visits each item in a sequence.

This is a trait that a Deserializer passes to a Visitor implementation.

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_key_seed<K>( &mut self, seed: K, ) -> Result<Option<<K as DeserializeSeed>::Value>, Self::Error>
where K: DeserializeSeed,

This returns Ok(Some(key)) for the next key in the map, or Ok(None) if there are no more remaining entries.

Deserialize implementations should typically use MapVisitor::visit_key or MapVisitor::visit instead.

Source

fn visit_value_seed<V>( &mut self, seed: V, ) -> Result<<V as DeserializeSeed>::Value, Self::Error>
where V: DeserializeSeed,

This returns a Ok(value) for the next value in the map.

Deserialize implementations should typically use MapVisitor::visit_value instead.

Provided Methods§

Source

fn visit_seed<K, V>( &mut self, kseed: K, vseed: V, ) -> Result<Option<(<K as DeserializeSeed>::Value, <V as DeserializeSeed>::Value)>, Self::Error>

This returns Ok(Some((key, value))) for the next (key-value) pair in the map, or Ok(None) if there are no more remaining items.

MapVisitor implementations should override the default behavior if a more efficient implementation is possible.

Deserialize implementations should typically use MapVisitor::visit instead.

Source

fn visit_key<K>(&mut self) -> Result<Option<K>, Self::Error>
where K: Deserialize,

This returns Ok(Some(key)) for the next key in the map, or Ok(None) if there are no more remaining entries.

This method exists as a convenience for Deserialize implementations. MapVisitor implementations should not override the default behavior.

Source

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

This returns a Ok(value) for the next value in the map.

This method exists as a convenience for Deserialize implementations. MapVisitor implementations should not override the default behavior.

Source

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

This returns Ok(Some((key, value))) for the next (key-value) pair in the map, or Ok(None) if there are no more remaining items.

This method exists as a convenience for Deserialize implementations. MapVisitor implementations should not override the default behavior.

Source

fn size_hint(&self) -> (usize, Option<usize>)

Return the lower and upper bound of items remaining in the sequence.

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, V_> MapVisitor for &'a mut V_
where V_: MapVisitor,

Source§

type Error = <V_ as MapVisitor>::Error

Source§

fn visit_key_seed<K>( &mut self, seed: K, ) -> Result<Option<<K as DeserializeSeed>::Value>, <&'a mut V_ as MapVisitor>::Error>
where K: DeserializeSeed,

Source§

fn visit_value_seed<V>( &mut self, seed: V, ) -> Result<<V as DeserializeSeed>::Value, <&'a mut V_ as MapVisitor>::Error>
where V: DeserializeSeed,

Source§

fn visit_seed<K, V>( &mut self, kseed: K, vseed: V, ) -> Result<Option<(<K as DeserializeSeed>::Value, <V as DeserializeSeed>::Value)>, <&'a mut V_ as MapVisitor>::Error>

Source§

fn visit<K, V>(&mut self) -> Result<Option<(K, V)>, <V_ as MapVisitor>::Error>
where K: Deserialize, V: Deserialize,

Source§

fn visit_key<K>(&mut self) -> Result<Option<K>, <V_ as MapVisitor>::Error>
where K: Deserialize,

Source§

fn visit_value<V>(&mut self) -> Result<V, <V_ as MapVisitor>::Error>
where V: Deserialize,

Source§

fn size_hint(&self) -> (usize, Option<usize>)

Implementors§

Source§

impl<I, E> MapVisitor for MapDeserializer<I, E>
where I: Iterator, <I as Iterator>::Item: Pair, <<I as Iterator>::Item as Pair>::First: ValueDeserializer<E>, <<I as Iterator>::Item as Pair>::Second: ValueDeserializer<E>, E: Error,

Source§

type Error = E