Crate sample_config

source ·
Expand description

Sample Config

crates.io page docs.rs page license: MIT

Automatic generation of sample configs with documentation comments. Just derive the SampleConfig trait on your config types, create an example object and generate a configuration file using that.

Usage

Example:

use sample_config::SampleConfig;

/// Example enum.
#[derive(Debug, Default, SampleConfig)]
enum ExampleEnum {
    /// A.
    #[default]
    VariantA,
}

/// General documentation isn't used.
#[derive(Debug, Default, SampleConfig)]
struct ExampleConfig {
    /// Some optional string.
    string: Option<String>,
    /// Some list of numbers.
    numbers: Vec<usize>,
    /// Enumeration of values.
    value: ExampleEnum,
}

let instance = ExampleConfig::default();
let yaml_file_string = instance.generate_sample_yaml();
std::fs::write("output.yaml", &yaml_file_string).unwrap();
std::fs::remove_file("output.yaml").unwrap()

Please take a look at the tests to see more complicated examples.

Lints

This projects uses a bunch of clippy lints for higher code quality and style.

Install cargo-lints using cargo install --git https://github.com/FlixCoder/cargo-lints. The lints are defined in lints.toml and can be checked by running cargo lints clippy --all-targets --workspace.

Enums

The type of the sample config output.

Traits

Generate sample configs for Rust data constructs automatically using an example instance.

Derive Macros

Derive SampleConfig for structs (with doc comments on their fields) and enums.