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 命令行界面


用于 onlyargs_derive

MIT 许可证

18KB
260 代码行

Crates.io Documentation unsafe forbidden GitHub actions GitHub activity GitHub Sponsors

仅参数解析!没有更多。

为什么?

  • 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" 示例进行比较。

无运行时依赖