derpscfg
A brief, incomplete, and mostly wrong derive implementation for scfg.
A fork of scfg-rs with simple but powerful derive capabilities.
Example
use std::collections::BTreeMap;
use derpscfg::prelude::*;
#[derive(Debug, Derpscfg)]
pub struct Model {
pub max_speed: String,
pub weight: String,
pub lines_served: Vec<String>,
}
#[derive(Debug, Derpscfg)]
pub struct Train {
#[scfg(param)]
pub name: String,
#[scfg(name="model")]
pub models: BTreeMap<String, Model>,
}
#[derive(Debug, Derpscfg)]
pub struct ScfgDemo {
pub train: Train,
}
fn main() {
static SCFG_DOC: &str = r#"
train "Shinkansen" {
model "E5" {
max-speed 320km/h
weight 453.5t
lines-served "Tōhoku" "Hokkaido"
}
model "E7" {
max-speed 275km/h
weight 540t
lines-served "Hokuriku" "Jōetsu"
}
}
"#;
let demo = derpscfg::parse::<ScfgDemo>(SCFG_DOC).unwrap();
println!("{demo:?}");
}
Documentation
More details can be found in the documentation. The crate also comes with
several examples.
Contributing
Please send patches or pull requests to my public inbox.
License
MIT OR Apache-2.0