#structopt #clap #serde-default #derive #cli #derive-deserialize #command-line

structopt-toml

为 structopt 提供从 TOML 加载默认值的加载器

16 个版本

0.5.1 2022年7月9日
0.5.0 2021年7月27日
0.4.5 2020年5月6日
0.4.2 2020年3月12日
0.2.4 2018年3月20日

#588命令行界面

Download history 196/week @ 2024-03-13 179/week @ 2024-03-20 308/week @ 2024-03-27 207/week @ 2024-04-03 112/week @ 2024-04-10 61/week @ 2024-04-17 82/week @ 2024-04-24 76/week @ 2024-05-01 75/week @ 2024-05-08 76/week @ 2024-05-15 178/week @ 2024-05-22 148/week @ 2024-05-29 77/week @ 2024-06-05 335/week @ 2024-06-12 305/week @ 2024-06-19 133/week @ 2024-06-26

每月 866 次下载
用于 2 crates

MIT/Apache

10KB
85 行代码(不含注释)

structopt-toml

为 structopt 提供从 TOML 加载默认值的加载器。它与 structopt 结合使用。

Actions Status Crates.io Docs.rs codecov

用法

此 crate 必须与 serdeserde_derivestructopttoml 显式使用。

[dependencies]
serde          = "1.0.104"
serde_derive   = "1.0.104"
structopt      = "0.3.11"
structopt-toml = "0.5.1"
toml           = "0.5.6"

示例

如果将 derive(Deserialize)derive(StructOptToml)serde(default) 添加到具有 derive(StructOpt) 的结构体中,则可以使用一些功能,如 from_args_with_toml

use serde_derive::Deserialize;
use structopt::StructOpt;
use structopt_toml::StructOptToml;

#[derive(Debug, Deserialize, StructOpt, StructOptToml)]
#[serde(default)]
struct Opt {
    #[structopt(default_value = "0", short = "a")] a: i32,
    #[structopt(default_value = "0", short = "b")] b: i32,
}

fn main() {
    let toml_str = r#"
        a = 10
    "#;
    let opt = Opt::from_args_with_toml(toml_str).expect("toml parse failed");
    println!("a:{}", opt.a);
    println!("b:{}", opt.b);
}

执行结果如下。

$ ./example
a:10        // value from TOML string
b:0         // value from default_value of structopt

$ ./example -a 20
a:20        // value from command line argument
b:0

许可证

根据以下任一许可证授权:

由您选择。

贡献

除非您明确声明,否则任何有意提交以包含在您的工作中的贡献,根据 Apache-2.0 许可证定义,应作为上述双重许可,不附加任何额外条款或条件。

依赖关系

~1.9–4MB
~58K SLoC