Struct serde_tagged::de::adj::struc::Visitor

source ·
pub struct Visitor<F, S> { /* private fields */ }
Expand description

A visitor that can be used to deserialize a struct-based adjacently tagged value.

This visitor handles a struct-based adjacently tagged value, which is represented by a struct containing exactly two fields. The first field of this tuple is named according to tag-key and contains tag, the second field is named according to value-key and contains the value. Thus this visitor will return an error if the visited type is not a map or sequence with two entries.

name is the name with which the struct that will be serialized.

The SeedFactory provided to this visitor provides a serde::de::DeserializeSeed implementation depending on the tag, which then determines how the value is going to be deserialized.

See de for more information on SeedFactory and implementations thereof.

§Note

If you do not need to choose a specific deserialization-method based on the tag, you should prefer KnownVisitor to this visitor.

Implementations§

source§

impl<F, S> Visitor<F, S>

source

pub fn new( tag_key: &'static str, value_key: &'static str, seed_factory: F, tag_seed: S, ) -> Self

Creates a new visitor with the given SeedFactory, tag-key and value-key.

Trait Implementations§

source§

impl<'de, F, S> Visitor<'de> for Visitor<F, S>
where F: SeedFactory<'de, S::Value>, S: DeserializeSeed<'de>,

source§

type Value = <F as SeedFactory<'de, <S as DeserializeSeed<'de>>::Value>>::Value

The value produced by this visitor.
source§

fn expecting(&self, fmt: &mut Formatter<'_>) -> Result

Format a message stating what data this Visitor expects to receive. Read more
source§

fn visit_map<A>(self, map: A) -> Result<Self::Value, A::Error>
where A: MapAccess<'de>,

The input contains a key-value map. Read more
source§

fn visit_seq<A>(self, seq: A) -> Result<Self::Value, A::Error>
where A: SeqAccess<'de>,

The input contains a sequence of elements. Read more
source§

fn visit_bool<E>(self, v: bool) -> Result<Self::Value, E>
where E: Error,

The input contains a boolean. Read more
source§

fn visit_i8<E>(self, v: i8) -> Result<Self::Value, E>
where E: Error,

The input contains an i8. Read more
source§

fn visit_i16<E>(self, v: i16) -> Result<Self::Value, E>
where E: Error,

The input contains an i16. Read more
source§

fn visit_i32<E>(self, v: i32) -> Result<Self::Value, E>
where E: Error,

The input contains an i32. Read more
source§

fn visit_i64<E>(self, v: i64) -> Result<Self::Value, E>
where E: Error,

The input contains an i64. Read more
source§

fn visit_i128<E>(self, v: i128) -> Result<Self::Value, E>
where E: Error,

The input contains a i128. Read more
source§

fn visit_u8<E>(self, v: u8) -> Result<Self::Value, E>
where E: Error,

The input contains a u8. Read more
source§

fn visit_u16<E>(self, v: u16) -> Result<Self::Value, E>
where E: Error,

The input contains a u16. Read more
source§

fn visit_u32<E>(self, v: u32) -> Result<Self::Value, E>
where E: Error,

The input contains a u32. Read more
source§

fn visit_u64<E>(self, v: u64) -> Result<Self::Value, E>
where E: Error,

The input contains a u64. Read more
source§

fn visit_u128<E>(self, v: u128) -> Result<Self::Value, E>
where E: Error,

The input contains a u128. Read more
source§

fn visit_f32<E>(self, v: f32) -> Result<Self::Value, E>
where E: Error,

The input contains an f32. Read more
source§

fn visit_f64<E>(self, v: f64) -> Result<Self::Value, E>
where E: Error,

The input contains an f64. Read more
source§

fn visit_char<E>(self, v: char) -> Result<Self::Value, E>
where E: Error,

The input contains a char. Read more
source§

fn visit_str<E>(self, v: &str) -> Result<Self::Value, E>
where E: Error,

The input contains a string. The lifetime of the string is ephemeral and it may be destroyed after this method returns. Read more
source§

fn visit_borrowed_str<E>(self, v: &'de str) -> Result<Self::Value, E>
where E: Error,

The input contains a string that lives at least as long as the Deserializer. Read more
source§

fn visit_string<E>(self, v: String) -> Result<Self::Value, E>
where E: Error,

The input contains a string and ownership of the string is being given to the Visitor. Read more
source§

fn visit_bytes<E>(self, v: &[u8]) -> Result<Self::Value, E>
where E: Error,

The input contains a byte array. The lifetime of the byte array is ephemeral and it may be destroyed after this method returns. Read more
source§

fn visit_borrowed_bytes<E>(self, v: &'de [u8]) -> Result<Self::Value, E>
where E: Error,

The input contains a byte array that lives at least as long as the Deserializer. Read more
source§

fn visit_byte_buf<E>(self, v: Vec<u8>) -> Result<Self::Value, E>
where E: Error,

The input contains a byte array and ownership of the byte array is being given to the Visitor. Read more
source§

fn visit_none<E>(self) -> Result<Self::Value, E>
where E: Error,

The input contains an optional that is absent. Read more
source§

fn visit_some<D>( self, deserializer: D, ) -> Result<Self::Value, <D as Deserializer<'de>>::Error>
where D: Deserializer<'de>,

The input contains an optional that is present. Read more
source§

fn visit_unit<E>(self) -> Result<Self::Value, E>
where E: Error,

The input contains a unit (). Read more
source§

fn visit_newtype_struct<D>( self, deserializer: D, ) -> Result<Self::Value, <D as Deserializer<'de>>::Error>
where D: Deserializer<'de>,

The input contains a newtype struct. Read more
source§

fn visit_enum<A>( self, data: A, ) -> Result<Self::Value, <A as EnumAccess<'de>>::Error>
where A: EnumAccess<'de>,

The input contains an enum. Read more

Auto Trait Implementations§

§

impl<F, S> Freeze for Visitor<F, S>
where F: Freeze, S: Freeze,

§

impl<F, S> RefUnwindSafe for Visitor<F, S>

§

impl<F, S> Send for Visitor<F, S>
where F: Send, S: Send,

§

impl<F, S> Sync for Visitor<F, S>
where F: Sync, S: Sync,

§

impl<F, S> Unpin for Visitor<F, S>
where F: Unpin, S: Unpin,

§

impl<F, S> UnwindSafe for Visitor<F, S>
where F: UnwindSafe, S: UnwindSafe,

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<'de, T> Expected for T
where T: Visitor<'de>,

source§

fn fmt(&self, formatter: &mut Formatter<'_>) -> Result<(), Error>

Format an explanation of what data was being expected. Same signature as the Display and Debug traits.
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T, U> Into<U> for T
where U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

source§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.