涡轮鱼堡垒:一个「必须永远通过」的测试文件
来源: github.com/rust-lang/rust — 2026-09-12
概述
这是 Rust 仓库里一个只有 43 行、40 行有效代码的测试文件,文件头部用一段戏仿史诗的注释记录了「涡轮鱼」(turbofish,即泛型参数前那对尖括号与双冒号)为什么必须保留。作者当年提议让泛型参数不写双冒号也能使用,结果撞上语法歧义:形如 a(d) 的写法既可能是泛型调用,也可能是比较表达式,于是提议被否决并留下 RFC 与 PR 记录。文件本身用一段刻意写法证明歧义仍然存在:把字符串元组里的变量名当作泛型参数传入,末行那句赋值得永远通过编译。注释的最后把这座「堡垒」献给为这个语法命名的人。
核心要点
- 文件名与注释都指向泛型参数前的双冒号语法,主张它不可被移除。
- 否决理由是真实的语法歧义:a(d) 同时可以是泛型调用或比较表达式。
- 相关背景记录在 RFC 2527 与 PR 53562,注释里直接给了链接。
- 文件里那行刻意构造的代码必须永远通过编译,作为歧义仍然存在的证明。
- 结尾把这座「堡垒」献给为语法命名的人,是一处很有人情味的纪念。
金句
这座「堡垒」必须永远通过编译:永远被那位赋予这头巨兽名字的守护天使看着。
👍 0
👎 0
返回 Lobsters 首页