## Module de

Source
Expand description

Deserialization for converting `ConfigValue` instances to target types.

The `Deserializer` type is the main driver of deserialization. The workflow is roughly:

1. `GlobalContext::get<T>()` creates `Deserializer` and calls `T::deserialize()`
2. Then call type-specific deserialize methods as in normal serde deserialization.
   - For primitives, `deserialize_*` methods look up `ConfigValue` instances in `GlobalContext` and convert.
   - Structs and maps are handled by `ConfigMapAccess`.
   - Sequences are handled by `ConfigSeqAccess`, which later uses `ArrayItemDeserializer` for each array item.
   - `Value<T>` is delegated to `ValueDeserializer` in `deserialize_struct`.

The purpose of this workflow is to:

- Retrieve the correct config value based on source location precedence
- Provide richer error context showing where a config is defined
- Provide a richer internal API to map to concrete config types without touching underlying `ConfigValue` directly

## Macros§

deserialize_method 🔒

## Structs§

ArrayItemDeserializer 🔒
  A deserializer for individual `ConfigValue` items in arrays
ConfigMapAccess 🔒
ConfigSeqAccess 🔒
Deserializer 🔒
  Serde deserializer used to convert config values to a target type using `GlobalContext::get`.
Tuple2Deserializer 🔒
  A deserializer which takes two values and deserializes into a tuple of those two values. This is similar to types like `StrDeserializer` in upstream serde itself.
ValueDeserializer 🔒
  This is a deserializer that deserializes into a `Value<T>` for configuration.

## Enums§

KeyKind 🔒
ValueSource 🔒
  Source of data for `ValueDeserializer`