5 个版本
0.2.0 | 2024年2月22日 |
---|---|
0.1.3 | 2024年2月12日 |
0.1.2 | 2023年4月13日 |
0.1.1 | 2023年4月12日 |
0.1.0 | 2023年4月10日 |
#670 in 命令行界面
18KB
260 代码行
仅参数解析!没有更多。
为什么?
- 100% 安全的 Rust 🦀。
- 正确性:所有平台上的无效 UTF-8 路径都能正确工作。
- 快速的编译时间。
- 便利性:在结构体上使用
#[derive(OnlyArgs)]
并将 CLI 参数从环境中解析到其中,只需最少的样板代码。
MSRV 政策
onlyargs
的最低支持 Rust 版本将始终在 GitHub 上的 MSRV.md 文件中提供。
理由
有一个 适用于所有人的参数解析包。那么为什么还要写另一个呢?
onlyargs
是极端简约的例子!它唯一提供的是 trait 和一些实用函数;你被期望为你的 CLI 参数结构体实现它。但不要因此吓跑!"完整" 示例 中的解析器实现只有大约 50 行!(文件的大部分是样板代码。)
此解析器的目标是正确性、快速编译时间和便利性。
100% 安全的 Rust
没有恶作剧!唯一的不安全 unsafe
代码都封装在标准库中。
正确性
- 主解析循环使用
OsString
以接受无效 UTF-8 作为参数。 - 参数可以直接存储为
OsString
或转换为PathBuf
而无需额外成本。轻松访问您的 mojibake 文件系统! OsString
的转换由您的解析器实现处理。它的正确性取决于您的需求!- 玩玩示例。尝试破坏它。享受乐趣!
快速的编译时间
查看 myn
基准结果。
便利性
参数解析非常简单(假设您偏好的领域特定语言(DSL)具有明确的观点且无废话)。没有必要通过支持多种形式,如 --argument 123
和 --argument=123
或 -a 123
和 -a123
来过度复杂化。 只需选择一种即可!
提供的示例在两种情况下都使用了前者:--argument 123
和 -a 123
都被接受作为具有值的参数。同时支持长参数名和短参数名只是一个模式!
Some("--argument") | Some("-a")
使用 proc_macro 推导实现相当直接。将 "full-derive" 示例 与 "full" 示例进行比较。