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.
Example:
use sample_config::SampleConfig;/// Example enum.#[derive(Debug,Default,SampleConfig)]enumExampleEnum{/// A.#[default]VariantA,}/// General documentation isn't used.#[derive(Debug,Default,SampleConfig)]structExampleConfig{/// 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.
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.