# [−][src]Trait serde::de::MapAccess

    pub trait MapAccess<'de> {
        type Error: Error;
        fn next_key_seed<K>(
            &mut self,
            seed: K
        ) -> Result<Option<K::Value>, Self::Error>
        where
            K: DeserializeSeed<'de>;
        fn next_value_seed<V>(&mut self, seed: V) -> Result<V::Value, Self::Error>
        where
            V: DeserializeSeed<'de>;

        fn next_entry_seed<K, V>(
            &mut self,
            kseed: K,
            vseed: V
        ) -> Result<Option<(K::Value, V::Value)>, Self::Error>
        where
            K: DeserializeSeed<'de>,
            V: DeserializeSeed<'de>,
        { ... }
        fn next_key<K>(&mut self) -> Result<Option<K>, Self::Error>
        where
            K: Deserialize<'de>,
        { ... }
        fn next_value<V>(&mut self) -> Result<V, Self::Error>
        where
            V: Deserialize<'de>,
        { ... }
        fn next_entry<K, V>(&mut self) -> Result<Option<(K, V)>, Self::Error>
        where
            K: Deserialize<'de>,
            V: Deserialize<'de>,
        { ... }
        fn size_hint(&self) -> Option<usize> { ... }
    }

Provides a `Visitor` access to each entry of a map in the input.

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

# Lifetime

The `'de` lifetime of this trait is the lifetime of data that may be borrowed by deserialized map entries. 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 `MapAccess` for a basic JSON data format.

## Associated Types

### `type Error: Error`

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

Loading content...

## Required methods

### `fn next_key_seed<K>(&mut self, seed: K) -> Result<Option<K::Value>, Self::Error> where
K: DeserializeSeed<'de>,`

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 `MapAccess::next_key` or `MapAccess::next_entry` instead.

### `fn next_value_seed<V>(&mut self, seed: V) -> Result<V::Value, Self::Error> where
V: DeserializeSeed<'de>,`

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

`Deserialize` implementations should typically use `MapAccess::next_value` instead.

# Panics

Calling `next_value_seed` before `next_key_seed` is incorrect and is allowed to panic or return bogus results.

Loading content...

## Provided methods

### `fn next_entry_seed<K, V>(
&mut self,
kseed: K,
vseed: V
) -> Result<Option<(K::Value, V::Value)>, Self::Error> where
K: DeserializeSeed<'de>,
V: DeserializeSeed<'de>,`

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.

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

`Deserialize` implementations should typically use `MapAccess::next_entry` instead.

### `fn next_key<K>(&mut self) -> Result<Option<K>, Self::Error> where
K: Deserialize<'de>,`

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. `MapAccess` implementations should not override the default behavior.

### `fn next_value<V>(&mut self) -> Result<V, Self::Error> where
V: Deserialize<'de>,`

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

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

# Panics

Calling `next_value` before `next_key` is incorrect and is allowed to panic or return bogus results.

### `fn next_entry<K, V>(&mut self) -> Result<Option<(K, V)>, Self::Error> where
K: Deserialize<'de>,
V: Deserialize<'de>,`

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. `MapAccess` implementations should not override the default behavior.

### `fn size_hint(&self) -> Option<usize>`

Returns the number of entries remaining in the map, if known.

Loading content...

## Implementations on Foreign Types

### `impl<'de, 'a, A> MapAccess<'de> for &'a mut A where
A: MapAccess<'de>,` [src]

#### `type Error = A::Error`

#### `fn next_key_seed<K>(&mut self, seed: K) -> Result<Option<K::Value>, Self::Error> where
K: DeserializeSeed<'de>,` [src]

#### `fn next_value_seed<V>(&mut self, seed: V) -> Result<V::Value, Self::Error> where
V: DeserializeSeed<'de>,` [src]

#### `fn next_entry_seed<K, V>(
&mut self,
kseed: K,
vseed: V
) -> Result<Option<(K::Value, V::Value)>, Self::Error> where
K: DeserializeSeed<'de>,
V: DeserializeSeed<'de>,` [src]

#### `fn next_entry<K, V>(&mut self) -> Result<Option<(K, V)>, Self::Error> where
K: Deserialize<'de>,
V: Deserialize<'de>,` [src]

#### `fn next_key<K>(&mut self) -> Result<Option<K>, Self::Error> where
K: Deserialize<'de>,` [src]

#### `fn next_value<V>(&mut self) -> Result<V, Self::Error> where
V: Deserialize<'de>,` [src]

#### `fn size_hint(&self) -> Option<usize>`[src]

Loading content...

## Implementors

### `impl<'de, I, E> MapAccess<'de> for MapDeserializer<'de, I, E> where
I: Iterator,
I::Item: Pair,
<I::Item as Pair>::First: IntoDeserializer<'de, E>,
<I::Item as Pair>::Second: IntoDeserializer<'de, E>,
E: Error,` [src]

#### `type Error = E`

#### `fn next_key_seed<T>(&mut self, seed: T) -> Result<Option<T::Value>, Self::Error> where
T: DeserializeSeed<'de>,` [src]

#### `fn next_value_seed<T>(&mut self, seed: T) -> Result<T::Value, Self::Error> where
T: DeserializeSeed<'de>,` [src]

#### `fn next_entry_seed<TK, TV>(
&mut self,
kseed: TK,
vseed: TV
) -> Result<Option<(TK::Value, TV::Value)>, Self::Error> where
TK: DeserializeSeed<'de>,
TV: DeserializeSeed<'de>,` [src]

#### `fn size_hint(&self) -> Option<usize>`[src]

Loading content...

# Help

## Keyboard Shortcuts

`?`
  Show this help dialog
`S`
  Focus the search field
`↑`
  Move up in search results
`↓`
  Move down in search results
`↹`
  Switch tab
`⏎`
  Go to active search result
`+`
  Expand all sections
`-`
  Collapse all sections

## Search Tricks

Prefix searches with a type followed by a colon (e.g., `fn:`) to restrict the search to a given type.

Accepted types are: `fn`, `mod`, `struct`, `enum`, `trait`, `type`, `macro`, and `const`.

Search functions by type signature (e.g., `vec -> usize` or `* -> vec`)

Search multiple things at once by splitting your query with comma (e.g., `str,u8` or `String,struct:Vec,test`)