Macro smart_config::config

source ·
macro_rules! config {
    ($($path:tt : $value:expr),* $(,)?) => { ... };
}
Expand description

Creates Json configuration input based on the provided list of path–value tuples. This is essentially a slightly fancier / more specialized version of json!.

A path must be a string literal, with segments separated by dots .. A value can be anything implementing Serialize. Paths in a macro cannot coincide or be embedded into each other. The value produced by macro has Json type.

§Examples

§Basic usage

let json = smart_config::config!(
    "test.int": 1,
    "test.str": "example",
    "test.flag": true,
    "test.structured.array": [1, 2, 3],
);
// Will create JSON input with an object at `test` with `int`, `str`, `flag`,
// and `structured` fields, where `structured` is an object with `array` field.

§Compilation-time checks

let json = smart_config::config!(
    "test": false,
    "test.int": 123,
    // Compilation error: Path #0 `test` is a prefix of path #1 `test.int`
);