getopt() 但更小 – Tony Finch

主要观点:介绍了 Rust 库lexopt,认为其“病态简单”,对比getopt(3)后尝试去掉getopt()中的选项字符串,新代码更简洁且功能更多;展示了新代码argv_opt()等函数与getopt()的不同,包括循环条件、处理选项值等方面;讨论了此经历与“端到端论证”的关联,以及lexopt与其他命令行解析库的比较。
关键信息:

  • lexopt自称“病态简单”的命令行参数解析器,对比getopt(3)后进行改进。
  • 新代码argv_opt()等函数的实现细节,如循环条件、处理选项值等。
  • 提到“端到端论证”,说明低层级函数可能冗余,此经历符合该论证。
  • 介绍lexopt实现比预期大,与clap对比,建议使用更好的库而非getopt()
    重要细节:
  • getopt()的循环条件在某些系统上可能存在问题,argv_opt()的循环更简单直接。
  • getopt()设置optargargv_opt()需调用argv_val()来获取选项值。
  • argv_err()用于打印错误消息和退出程序。
  • lexopt实现比预期大,与clap对比,建议使用更好的库。可根据 0BSD 或 MIT-0 许可证使用文中代码。
阅读 12
0 条评论