#command-line-arguments #arguments-parser #macro #entrance

entrance_derive

一个提供crate entrance的 derive宏的crate

3个版本 (破坏性更新)

0.3.0 2020年11月6日
0.2.0 2019年9月28日
0.1.0 2019年6月4日

#184#command-line-arguments

每月 22 次下载
用于 entrance

MIT 许可证

18KB
527 代码行

entrance

Crates.io Document CircleCI

类型辅助命令行参数解析器

entrance 提供了解析命令行参数的类型辅助工具。

简单用法

use entrance::{Arguments, Options};
use std::env;
use std::path::PathBuf;

#[derive(Options, PartialEq)]
enum Opts {
    #[entrance(description = "Print help message")]
    #[entrance(short = 'h')]
    #[entrance(informative(entrance::help))]
    Help,

    #[entrance(description = "Print version infomation")]
    #[entrance(informative(entrance::version))]
    Version,

    #[entrance(description = "Use verbose output")]
    #[entrance(short = 'v')]
    Verbose,
}

#[derive(Arguments)]
struct Args {
    #[entrance(description = "The number of lines")]
    num: f64,

    #[entrance(description = "Path to a file")]
    file: PathBuf,
}

type Command = entrance::Command<Opts, Args>;

fn main() {
    let command = Command::new(env!("CARGO_PKG_NAME"), env!("CARGO_PKG_VERSION"));
    let (opts, args) = command.parse_or_exit(env::args());

    if opts.contains(&Opts::Verbose) {
        println!("enabled the verbose output");
    }

    println!("1st argument: \"{}\"", args.num);
    println!("2nd argument: \"{}\"", args.file.display());
}

结构体和特质

命令

此结构体提供了解析命令行参数的工具。

在解析命令行参数之前,需要使用关联函数 new 创建实例,然后调用实例的 parse

选项

为此提供了 derive宏。

限制:derive宏仅支持没有字段的枚举的变体。

参数

为此提供了 derive宏。

限制:该宏仅支持具有实现 FromStr 成员的结构体。

依赖项

~1.5MB
~35K SLoC