serde::de

Trait EnumAccess

source
pub trait EnumAccess<'de>: Sized {
    type Error: Error;
    type Variant: VariantAccess<'de, Error = Self::Error>;

    // Required method
    fn variant_seed<V>(
        self,
        seed: V,
    ) -> Result<(V::Value, Self::Variant), Self::Error>
       where V: DeserializeSeed<'de>;

    // Provided method
    fn variant<V>(self) -> Result<(V, Self::Variant), Self::Error>
       where V: Deserialize<'de> { ... }
}
Expand description

Provides a Visitor access to the data of an enum in the input.

EnumAccess is created by the Deserializer and passed to the Visitor in order to identify which variant of an enum to deserialize.

§Lifetime

The 'de lifetime of this trait is the lifetime of data that may be borrowed by the deserialized enum variant. See the page Understanding deserializer lifetimes for a more detailed explanation of these lifetimes.

§Example implementation

The example data format presented on the website demonstrates an implementation of EnumAccess for a basic JSON data format.

Required Associated Types§

source

type Error: Error

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

source

type Variant: VariantAccess<'de, Error = Self::Error>

The Visitor that will be used to deserialize the content of the enum variant.

Required Methods§

source

fn variant_seed<V>( self, seed: V, ) -> Result<(V::Value, Self::Variant), Self::Error>
where V: DeserializeSeed<'de>,

variant is called to identify which variant to deserialize.

Deserialize implementations should typically use EnumAccess::variant instead.

Provided Methods§

source

fn variant<V>(self) -> Result<(V, Self::Variant), Self::Error>
where V: Deserialize<'de>,

variant is called to identify which variant to deserialize.

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

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.

Implementors§

source§

impl<'de, 'a, E> EnumAccess<'de> for CowStrDeserializer<'a, E>
where E: Error,

source§

type Error = E

source§

type Variant = UnitOnly<E>

source§

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

source§

type Error = E

source§

type Variant = UnitOnly<E>

source§

impl<'de, A> EnumAccess<'de> for MapAccessDeserializer<A>
where A: MapAccess<'de>,

source§

type Error = <A as MapAccess<'de>>::Error

source§

type Variant = MapAsEnum<A>

source§

impl<'de, E> EnumAccess<'de> for BorrowedStrDeserializer<'de, E>
where E: Error,

source§

type Error = E

source§

type Variant = UnitOnly<E>

source§

impl<'de, E> EnumAccess<'de> for StringDeserializer<E>
where E: Error,

source§

type Error = E

source§

type Variant = UnitOnly<E>

source§

impl<'de, E> EnumAccess<'de> for U32Deserializer<E>
where E: Error,

source§

type Error = E

source§

type Variant = UnitOnly<E>