# Trait serde::de::EnumAccess

source · [−]

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

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

        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.

## Implementors

source

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

#### type Error = E

#### type Variant = UnitOnly<E>

source

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

#### type Error = E

#### type Variant = UnitOnly<E>

source

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

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

#### type Variant = MapAsEnum<A>

source

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

#### type Error = E

#### type Variant = UnitOnly<E>

source

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

#### type Error = E

#### type Variant = UnitOnly<E>

source

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

#### type Error = E

#### type Variant = UnitOnly<E>