Hasty Briefsbeta

双语

Making a Small Clippy Lint

8 months ago
  • #PatternMatching
  • #Rust
  • #Clippy
  • 一位朋友询问是否有一个Clippy lint(代码检查规则)来强制使用详尽的结构体模式匹配,以避免在结构体匹配中出现未处理的变量。
  • 初步调查发现目前没有现成的lint可以实现这一目的,因此决定创建一个新的lint规则。
  • 该lint的第一个版本是一个早期检查阶段,用于标记结构体解构中使用省略模式(`..`)的情况。
  • 随后对该lint进行了改进,使其成为一个包含类型信息并提供忽略字段建议(如`字段名: _`)的后期检查阶段。
  • 开发过程中遇到的挑战包括处理宏生成的代码,以及在HIR(高级中间表示)中准确定位`..`符号的位置。
  • 为此向Rust提交了一个pull request,要求编译器添加`..`符号的位置信息。
  • 由于Clippy正处于功能冻结期,该lint目前仍在等待审核,但该项目为理解Clippy和rustc的内部机制提供了宝贵经验。