[英]Add optional to clap rust?
我有工作代码,但不确定这种实现方式是否正确。
CLi 程序将接受 4 个参数,可以是零、全部或它们之间的任意组合。
这是工作代码:
#[derive(Parser, Default, Debug)]
struct Arguments {
#[clap(short, long, default_value_t = false)]
/// if areas.csv to download
areas: bool,
#[clap(short, long, default_value_t = false)]
/// if markers.csv to download
markers: bool,
#[clap(short, long, default_value_t = false)]
/// if tracks.csv to download
tracks: bool,
#[clap(short, long)]
/// path to file of GPS tracks to download
gpx_list_file: Option<String>,
}
我不喜欢的是在 -h 部分没有办法知道它们是可选的。
Options:
-a, --areas if areas.csv to download
-m, --markers if markers.csv to download
-t, --tracks if tracks.csv to download
-g, --gpx-list-file <GPX_LIST_FILE> path to file of GPS tracks to download
-h, --help Print help information
-V, --version Print version information
我知道我可以添加“这是可选字段”之类的文本,但我觉得有更好的方法。
还有什么是知道我是否有 0 个参数的最佳方法。
目前我用这个。
if (args.areas, args.markers, args.tracks, args.gpx_list_file.is_none()) == (false, false, false, true) {
println!("Nothing to download.");
exit(5);
}
这可能有点令人困惑。 当命名参数是可选的时,您看不到任何具体告诉您的信息; 你只是得到这样的东西:
Usage: command [OPTIONS]
Options:
-a, --areas if areas.csv to download
-n, --number <NUMBER> [default: 1]
-h, --help Print help information
-V, --version Print version information
当需要--areas
时,帮助 output 现在在第一行包括--areas
:
Usage: command [OPTIONS] --areas
Options:
-a, --areas if areas.csv to download
-n, --number <NUMBER> [default: 1]
-h, --help Print help information
-V, --version Print version information
Usage
部分中存在--areas
让您知道它是必需的,它不存在则告诉您它是可选的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.