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 as DeserializeSeed<'de>>::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ยง
Sourcetype Error: Error
type Error: Error
The error type that can be returned if some error occurs during deserialization.
Sourcetype Variant: VariantAccess<'de, Error = Self::Error>
type Variant: VariantAccess<'de, Error = Self::Error>
The Visitor that will be used to deserialize the content of the enum
variant.
Required Methodsยง
Sourcefn variant_seed<V>(
self,
seed: V,
) -> Result<(<V as DeserializeSeed<'de>>::Value, Self::Variant), Self::Error>where
V: DeserializeSeed<'de>,
fn variant_seed<V>(
self,
seed: V,
) -> Result<(<V as DeserializeSeed<'de>>::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ยง
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ยง
ยงimpl<'de> EnumAccess<'de> for QsDeserializer<'de>
impl<'de> EnumAccess<'de> for QsDeserializer<'de>
type Error = Error
type Variant = QsDeserializer<'de>
fn variant_seed<V>(
self,
seed: V,
) -> Result<(<V as DeserializeSeed<'de>>::Value, <QsDeserializer<'de> as EnumAccess<'de>>::Variant), Error>where
V: DeserializeSeed<'de>,
Implementorsยง
Sourceยงimpl<'de, 'a, E> EnumAccess<'de> for CowStrDeserializer<'a, E>where
E: Error,
Available on crate features std or alloc only.
impl<'de, 'a, E> EnumAccess<'de> for CowStrDeserializer<'a, E>where
E: Error,
std or alloc only.Sourceยงimpl<'de, 'a, E> EnumAccess<'de> for StrDeserializer<'a, E>where
E: Error,
impl<'de, 'a, E> EnumAccess<'de> for StrDeserializer<'a, E>where
E: Error,
Sourceยงimpl<'de, A> EnumAccess<'de> for MapAccessDeserializer<A>where
A: MapAccess<'de>,
impl<'de, A> EnumAccess<'de> for MapAccessDeserializer<A>where
A: MapAccess<'de>,
Sourceยงimpl<'de, E> EnumAccess<'de> for BorrowedStrDeserializer<'de, E>where
E: Error,
impl<'de, E> EnumAccess<'de> for BorrowedStrDeserializer<'de, E>where
E: Error,
Sourceยงimpl<'de, E> EnumAccess<'de> for StringDeserializer<E>where
E: Error,
Available on crate features std or alloc only.
impl<'de, E> EnumAccess<'de> for StringDeserializer<E>where
E: Error,
std or alloc only.