12 个版本
0.3.1 | 2024 年 7 月 27 日 |
---|---|
0.3.0 | 2023 年 11 月 28 日 |
0.2.9 | 2021 年 7 月 9 日 |
0.2.7 | 2020 年 6 月 11 日 |
0.1.0 | 2019 年 7 月 29 日 |
#298 在 命令行界面
1,270 每月下载量
在 2 crates 中使用
41KB
703 行
AutoArgs
通过定义结构体来解析命令行参数。它使用 derive 来定义一组命令行标志。它不使用 clap,并且它的依赖项相当简洁。
基本思路是,你定义一个类型来表示从运行你程序的运行者那里希望在命令行上获得的信息,然后在那个类型上 derive(AutoArgs)
,然后调用 YourType::from_args()
来找出你的用户给了你什么。
与 ClapMe 的区别
AutoArgs 在本质上与 ClapMe 等效。它只是在实现、编译速度、帮助信息和错误信息上有所不同。
与 structopt 的区别
StructOpt 是一个与 auto-args
具有相同功能的工具,但采用不同的理念。StructOpt 力求尽可能像 clap 一样表达,并启用 clap 所有的功能,并且具有紧密耦合的 API。它是通过广泛使用诸如 #[structopt(long = "long-name")]
这样的属性来实现的,这些属性定义了每个标志的行为和属性。这使得它功能强大,但使用起来相当冗长。
相比之下,AutoArgs(目前可能还不支持)不支持任何属性,并且直接从你的类型中确定所有行为。这意味着你不需要重复自己,但也意味着你对自己的接口控制更细粒度较低,有些接口可能几乎不可能实现。
你可以手动实现AutoArgs
特质,这确实使得为特定类型创建不同的命令行变得可能(而且并不痛苦),但这不是使用AutoArgs
的预期方式。
许可
根据你的选择,许可协议为以下之一:
- Apache License,版本2.0(《LICENSE-APACHE》或https://www.apache.org/licenses/LICENSE-2.0)
- MIT许可(《LICENSE-MIT》或https://opensource.org/licenses/MIT)
任选其一。
贡献
除非你明确声明,否则任何有意提交以包含在你所定义的工作中的贡献(根据Apache-2.0许可协议),都将根据上述许可协议进行双重许可,没有任何额外的条款或条件。
依赖
约2MB
约49K SLoC