7 个版本 (3 个稳定)

1.0.4 2023年12月4日
1.0.3 2023年11月13日
0.2.3 2023年5月22日
0.2.0 2023年4月1日
0.1.0 2022年11月20日

#268命令行界面


2 工具包中使用

MIT/Apache

275KB
6K SLoC

blarg

blarg 是一个 Rust 的命令行参数解析器。简要来说,它提供了类型安全、领域敏感的参数/选项范式的命令行解析器功能。查看 rustdoc 获取更多信息。

"blarg" 源于以下

  • arg 表示参数解析器。
  • blarg 因为其他名字都已经被人用了 🤪。

派生示例

use blarg::{derive::*, CommandLineParser, Parameter, Scalar, Switch};

#[derive(Debug, Default, BlargParser)]
#[blarg(program = "example")]
struct Parameters {
    #[blarg(short = 'v')]
    verbose: bool,
    value: u32,
}

fn main() {
    let parameters = Parameters::blarg_parse();
    println!(
        "value: {}, verbose: {}",
        parameters.value, parameters.verbose
    );
}

$ ./main -h
usage: example [-h] [-v] VALUE

positional arguments:
 VALUE                                              type: u32

options:
 -h, --help     Show this help message and exit.
 -v, --verbose

构建器示例

use blarg::{CommandLineParser, Parameter, Scalar, Switch};

fn main() {
    let mut verbose: bool = false;
    let mut value: u32 = 0;
    let ap = CommandLineParser::new("example");
    let parser = ap
        .add(Parameter::option(
            Switch::new(&mut verbose, true),
            "verbose",
            Some('v'),
        ))
        .add(Parameter::argument(Scalar::new(&mut value), "value").meta(vec!["type: u32"]))
        .build();
    parser.parse();
    println!("value: {value}, verbose: {verbose}");
}

$ ./main -h
usage: example [-h] [-v] VALUE

positional arguments:
 VALUE                                              type: u32

options:
 -h, --help      Show this help message and exit.
 -v, --verbose

开发

cargo build --workspace
cargo test --workspace
cargo doc --open --no-deps --all-features --package blarg

./target/debug/examples/reducer -h

依赖项

~2–14MB
~139K SLoC