簡體   English   中英

添加可選拍拍 rust?

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM