[英]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.