繁体   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