structconf

Crates.iostructconf
lib.rsstructconf
version0.5.0
sourcesrc
created_at2020-07-09 23:54:21.117813
updated_at2022-01-04 21:09:38.427361
descriptionCombine clap and rust-ini into a single procedural macro
homepagehttps://github.com/marioortizmanero/structconf
repositoryhttps://github.com/marioortizmanero/structconf
max_upload_size
id263068
size58,273
Mario (marioortizmanero)

documentation

https://docs.rs/structconf/

README

StructConf

Combine argument parsing with a config file at compile time.

Build Status docs.rs version


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.

Commit count: 123

cargo fmt