3个版本
0.1.2 | 2019年6月27日 |
---|---|
0.1.1 | 2019年6月11日 |
0.1.0 | 2019年6月5日 |
#145 in #capture
在ctflag中使用
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