16 个版本
0.2.11 | 2024 年 6 月 9 日 |
---|---|
0.2.10 | 2023 年 2 月 12 日 |
0.2.9 | 2023 年 1 月 27 日 |
0.2.5 | 2022 年 6 月 13 日 |
0.1.17 | 2020 年 12 月 25 日 |
120 在 命令行界面 中排名
每月 208 次下载
在 13 个 Crates 中使用(12 个直接使用)
56KB
956 行
洪水潮
命令行标志和选项解析工具。
功能
no_std
和std
都支持。- 标志、选项、子命令和自由参数
- 短标志和选项(如
-a
) - 长标志和选项(如
--long
) - 组合短标志(如
-abc
::=-a
-b
-c
) - 单个长选项(如
-long
) - 缩写长选项(如
--abbr
::=--abbreviate
) - 单个错误或多个错误
- 仅支持 UTF-8 参数
- 可以通过编译开关以最佳方式使用具有许多功能的编译器。
- 最小支持 rustc 1.56.1 (59eed8a2a 2021-11-01)
待办事项
- 多个错误
-
无 std
- 选项建议(你是否指的是?'--abc')
- Windows 风格(如
/a
) - 支持源代码生成工具
- 更易于使用
不支持
- 过程宏风格
- 传统宏风格
- 非 UTF-8 参数,多字节或宽字符
示例
在 示例目录 中。
- 手动编码风格:bsd-sed.rs,gnu-cat.rs
- 单个长选项:ffmpeg.rs
- 通过 xtask 和 parse_simple_gnu_style() 生成源代码:curl.rs
支持
- flood-tide-gen - 生成 flood-tide 表格
- aki-gsub - 用于 flood-tide 的样本
替代方案
这个解析器并没有什么新奇的点。它只是逐个比较字符。还有什么比这更简单吗?
- clap - 最受欢迎和最完整的
- structopt - 使用过程宏的 clap 解析器
- gumdrop - 使用过程宏的简单解析器
- argh - 过程宏
- rustop - 传统的宏
- pico-args - 简单的使用
- getopts - 简单的使用
- docopt - 简单的使用
基准测试
比较性能和.text大小。
- 由 rustc 1.66.0 (69f9c33d7 2022-12-12) 编译
名称 |
基准 |
.文本 |
Δ基准 |
Δ.文本 |
---|---|---|---|---|
cmp_null_void | 1.327 kc | 316 kib | 0.000 kc | 0 kib |
cmp_flood_tide | 6.315 kc | 356 kib | 4.988 kc | 40 kib |
cmp_pure_rust | 7.951 kc | 368 kib | 6.624 kc | 52 kib |
cmp_gumdrop | 11.346 kc | 432 kib | 10.019 kc | 116 kib |
cmp_argh | 20.851 kc | 385 kib | 19.524 kc | 69 kib |
cmp_pico_args | 39.187 kc | 393 kib | 37.860 kc | 77 kib |
cmp_rustop | 379.726 kc | 465 kib | 378.399 kc | 149 kib |
cmp_clap | 415.422 kc | 988 kib | 414.095 kc | 671 kib |
cmp_clap3 | 495.219 kc | 840 kib | 493.893 kc | 524 kib |
cmp_structopt | 553.679 kc | 862 kib | 552.352 kc | 546 kib |
cmp_getopts | 637.986 kc | 395 kib | 636.659 kc | 78 kib |
cmp_commander | 665.407 kc | 412 kib | 664.080 kc | 95 kib |
cmp_lapp | 1115.093 kc | 451 kib | 1113.766 kc | 135 kib |
cmp_args | 2101.706 kc | 427 kib | 2100.379 kc | 110 kib |
cmp_app | 2192.245 kc | 630 kib | 2190.918 kc | 313 kib |
- 由 rustc 1.57.0 (f1edd0429 2021-11-29) 编译
名称 |
基准 |
.文本 |
Δ基准 |
Δ.文本 |
---|---|---|---|---|
cmp_null_void | 1.405 kc | 316 kib | 0.000 kc | 0 kib |
cmp_flood_tide | 5.603 kc | 356 kib | 4.197 kc | 40 kib |
cmp_pure_rust | 7.845 kc | 368 kib | 6.439 kc | 52 kib |
cmp_gumdrop | 8.737 kc | 432 kib | 7.332 kc | 116 kib |
cmp_argh | 23.114 kc | 385 kib | 21.708 kc | 69 kib |
cmp_pico_args | 41.325 kc | 393 kib | 39.920 kc | 77 kib |
cmp_rustop | 394.432 kc | 465 kib | 393.026 kc | 149 kib |
cmp_clap | 426.678 kc | 988 kib | 425.273 kc | 671 kib |
cmp_clap3 | 495.857 kc | 840 kib | 494.452 kc | 524 kib |
cmp_structopt | 576.224 kc | 862 kib | 574.818 kc | 546 kib |
cmp_getopts | 657.353 kc | 395 kib | 655.948 kc | 78 kib |
cmp_commander | 673.761 kc | 412 kib | 672.356 kc | 95 kib |
cmp_lapp | 1089.452 kc | 451 kib | 1088.047 kc | 135 kib |
cmp_args | 2066.320 kc | 427 kib | 2064.915 kc | 110 kib |
cmp_app | 2171.903 kc | 630 kib | 2170.498 kc | 313 kib |
us
是微秒.text
是 elf .text 段大小Δ
(delta) 是与 cmp_null_void 的差值cmp_null_void
是非解析器,只支持--help
和--version
cmp_pure_rust
是使用字符串匹配新编写的- 在 intel Q6600 @ 2.40GHz 上进行基准测试
- 参考 各种解析器的比较
变更日志
许可证
本项目许可方式为
- Apache License, Version 2.0, (LICENSE-APACHE 或 https://www.apache.org/licenses/LICENSE-2.0)
- 麻省理工学院许可证(LICENSE-MIT 或 https://opensource.org/licenses/MIT)
根据您的选择。