Expand description
Helper modules for customizing serialization and deserialization.
This module provides utilities for controlling how certain types are serialized and deserialized, particularly enums.
§Singleton Map
The singleton_map family of modules provides helpers for serializing
enums as single-entry maps, which is a common YAML pattern.
§Example
use noyalib::with::singleton_map;
#[derive(Debug, serde::Serialize, serde::Deserialize, PartialEq)]
enum Action {
Start { delay: u32 },
Stop,
}
#[derive(Debug, serde::Serialize, serde::Deserialize, PartialEq)]
struct Task {
name: String,
#[serde(with = "singleton_map")]
action: Action,
}
let task = Task {
name: "my-task".to_string(),
action: Action::Start { delay: 5 },
};
let yaml = noyalib::to_string(&task).unwrap();
// Output:
// name: my-task
// action:
// Start:
// delay: 5Re-exports§
pub use singleton_map_recursive as nested_singleton_map;
Modules§
- singleton_
map - Serialize enums as single-entry maps.
- singleton_
map_ optional - Serialize optional enums as single-entry maps.
- singleton_
map_ recursive - Recursively serialize enums as single-entry maps.
- singleton_
map_ with - Serialize enums as single-entry maps with custom key transformation.