第一次玩 Rusts 拍板箱。而且我想知道如何在命令行未指定选项时使用命令行选项的默认值。
鉴于我default_value
在 yaml 文件中指定了 a (请参见下面的代码段),matches.value_of("VERBOSE")
如果命令行中没有给出其他值,我希望返回默认值。
相反,我得到:
线程“主”在“调用
Option::unwrap()
一个None
值”时惊慌失措,src/main.rs:18:6
我在谷歌上搜索了一段时间,但似乎没有人真正给出一个规范的例子来说明它应该如何工作。
...
args:
- config:
short: c
long: config
value_name: CONFIG
help: Specifies the config file to use.
takes_value: true
default_value: ""
- verbose:
short: v
long: verbose
value_name: VERBOSE
help: Sets verbosity. 0 = silent, > 0 = verbose.
takes_value: true
default_value: "1"
在这里,我的微弱尝试......编译但无法正常工作(如果使用空命令行,则会出现恐慌)。
// ...
let yaml = load_yaml!("cli.yml");
let matches = App::from_yaml(yaml).get_matches();
let verbosity =
matches.value_of("VERBOSE")
.and_then(|s| s.parse::<u8>().ok())
.unwrap();
由于这显然不使用默认值,所以我的简单问题是:我该怎么做?