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的内部机制提供了宝贵经验。