Skip to main content

Module with

Module with 

Source
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: 5

Re-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.