9 unstable releases
0.5.0 | Jan 4, 2022 |
---|---|
0.4.0 | Sep 14, 2020 |
0.3.2 | Jul 13, 2020 |
0.2.0 | Jul 12, 2020 |
0.1.3 | Jul 10, 2020 |
#574 in Configuration
38 downloads per month
20KB
99 lines
StructConf is a small derive macro that allows you to combine argument parsing from clap and config file parsing from rust-ini at compile time. It's inspired by the argument parser structopt.
StructConf aims to be relatively small and simple. Here are its current selling points:
- Options available in the config file, argument parser, both, or none.
- Configurable option names.
- Custom types supported.
- Optional fields with
Option
. - Custom default expressions.
- Insightful error messages.
- Thoroughly tested.
Small example:
use structconf::{clap, StructConf};
#[derive(Debug, StructConf)]
struct ServerConfig {
#[conf(help = "The public key")]
pub public_key: String,
#[conf(no_file, long = "your-secret", help = "Your secret API key")]
pub secret_key: String,
#[conf(default = "100", help = "timeout in seconds")]
pub timeout: i32,
}
pub fn main() {
let app = clap::App::new("demo");
let conf = ServerConfig::parse(app, "config.ini");
println!("Parsed config: {:#?}", conf);
}
For more details on how to use Structconf, read the docs and check out the examples.
Dependencies
~4.5MB
~85K SLoC