3个版本

0.1.2 2019年6月27日
0.1.1 2019年6月11日
0.1.0 2019年6月5日

#145 in #capture


ctflag中使用

Apache-2.0

20KB
490

捕获标志   最新版本

免责声明:这不是一个官方的Google产品。

捕获标志是一个命令行标志解析Rust库。


使用方法

use ctflag::{Flags, FromArg, FromArgError, FromArgResult};

#[derive(Flags)]
struct MyFlags {
    #[flag(desc = "The floopy floops the whoop")]
    enable_floopy: bool,

    #[flag(
        desc = "How many slomps to include",
        placeholder = "INTEGER",
        default = 34
    )]
    slomp_count: i64,

    #[flag(desc = "An optional path to a Gmup", placeholder = "PATH")]
    gmup: Option<String>,

    #[flag(short = 'h', desc = "Prints this help message")]
    help: bool,
}

// Custom type.
enum Fruit {
    Apple,
    Orange,
}

impl FromArg for Fruit {
    fn from_arg(s: &str) -> FromArgResult<Self> {
        match s {
            "apple" => Ok(Fruit::Apple),
            "orange" => Ok(Fruit::Orange),
            _ => Err(FromArgError::with_message("must be an apple or orange")),
        }
    }
}

fn main() {
    let result = MyFlags::from_args(std::env::args());
    match result {
        Ok((flags, args)) => {
            if flags.help {
                println!("{}", MyFlags::description());
                return;
            }
            // ...
        }
        Err(err) => {
            println!("Error parsing flags: {}", err);
            println!("{}", MyFlags::description());
        }
    }
}

设置

[dependencies]
ctflag = "0.1"

依赖项

~2.5MB
~54K SLoC