Crate sample_config
source ·Expand description
Sample Config
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.