2 个版本
0.4.6 | 2021 年 4 月 15 日 |
---|---|
0.4.5 | 2021 年 4 月 15 日 |
#892 in 命令行界面
531 每月下载量
9KB
81 行
structopt-yaml
为 structopt 提供从 YAML 或 JSON 加载默认值的工具。它与 structopt 结合使用。由 structopt-toml 衍生。
用法
必须与 serde
、serde_derive
、structopt
和 serde_yaml
显式使用。
[dependencies]
serde = "1.0"
serde_derive = "1.0"
serde_yaml = "0.8.17"
structopt = "0.3.11"
structopt-yaml = "0.4.6"
示例
如果向结构体中添加 derive(Deserialize)
、derive(StructOptYaml)
和 serde(default)
,则可以使用一些函数,如 from_args_with_yaml
。
use serde_derive::Deserialize;
use structopt::StructOpt;
use structopt_yaml::StructOptYaml;
#[derive(Debug, Deserialize, StructOpt, StructOptYaml)]
#[serde(default)]
struct Opt {
#[structopt(default_value = "0", short = "a")] a: i32,
#[structopt(default_value = "0", short = "b")] b: i32,
}
fn main() {
let yaml_str = r#"
a: 10
"#;
let opt = Opt::from_args_with_yaml(yaml_str).expect("yaml parse failed");
println!("a:{}", opt.a);
println!("b:{}", opt.b);
}
执行结果如下。
$ ./example
a:10 // value from YAML string
b:0 // value from default_value of structopt
$ ./example -a 20
a:20 // value from command line argument
b:0
许可证
根据您的选择,许可协议为以下之一。
- Apache 许可协议第 2 版,(LICENSE-APACHE 或 http://www.apache.org/licenses/LICENSE-2.0)
- MIT 许可协议 (LICENSE-MIT 或 http://opensource.org/licenses/MIT)
贡献
除非您明确声明,否则任何有意提交以包含在作品中的贡献,根据 Apache-2.0 许可协议定义,应如上所述双重许可,无需任何附加条款或条件。
依赖项
~3–5.5MB
~85K SLoC