大数跨境

Rust 要变成下一个C++?

Rust 要变成下一个C++? TonyBai
2026-09-12
5



大家好,我是Tony Bai。

【导读】

一位Rust开发者在r/rust发帖,列出了十几项正在讨论中的语言提案——命名参数、开放枚举、字段投影、Move/Destroy/Forget trait……他担心Rust正在一步步走上C++ “大杂烩”的老路。帖子迅速引爆社区,连Rust语言团队成员都亲自下场回应。这场争论,或许正是所有“成功的编程语言”都逃不开的宿命拷问。

【文章要点】

  • 一石激起千层浪Reddit r/rust 一篇梳理十几项正在推进的复杂语言提案的帖子引发全网热议,直击“Rust 是否会重蹈 C++ 历史覆辙”的敏感痛点;
  • 激增的“焦虑清单”:命名参数、开放枚举、字段投影、Move/Destroy/Forget 三件套 trait、FFI 函数重载等提案密集讨论,引发社区对语法膨胀和语言正交性破损的深层担忧;
  • 出圈的“三轴判断法”:高赞神评提出从“广泛 vs 狭窄”、“能力解锁 vs 纯语法糖”、“新特性 vs 填坑做减法”三个维度量化特性的引入价值,成为理性评估新提案的普适标尺;
  • 语言团队核心下场释疑:核心成员 Josh Triplett 明确表示团队对复杂度极其谨慎,部分提案旨在消除旧有心智负担(做减法),部分特性(如函数重载)将严格限定范围,而命名参数等更倾向于通过现有特性组合解决;
  • 民意与机制的博弈:年度调查显示 40% 的受访者希望优先做简化,而 Rust 历经十年依然保持克制的核心底牌,在于严格且拉长周期的 RFC 流程与“复杂度预算”自检机制。

如果你关注编程语言圈,大概率已经刷到过这条帖子。

今日,Reddit的r/rust板块,一名用户发了一篇题为《My concerns about the future of Rust(我对Rust未来的担忧)》的帖子。

没有惊悚的标题,没有引战的措辞,开篇第一句甚至是:

"我爱Rust,但是……"

但就是这么一篇平静的帖子,硬是炸出了数百个赞和评论,甚至惊动了Rust语言团队的核心成员亲自下场解释。

争论的核心问题只有一个:Rust,会不会变成下一个C++?

一份“焦虑清单”

楼主开门见山地表示,自己并不是反对某一条具体提案,而是担心把所有正在讨论的提案叠加在一起看时,Rust语言会呈现出令人不安的整体趋势。

他列出了一长串正在社区讨论、甚至已经有RFC(提案文档)在推进的语言特性,其中包括:

  • 命名参数 / 默认参数
  • 句柄类型、use语法糖、Share trait(人体工学式引用计数)
  • 开放枚举(Open enums,主打FFI场景,但可能被滥用到其他地方)
  • pub(api)可见性修饰符
  • 字段访问声明与基于位置的生命周期语法
  • 字段投影(Field Projections)
  • 显式尾调用 / loop_match
  • Sized Hierarchy,在Sized/?Sized之上叠加多个新trait
  • 对Drop语义的自定义控制
  • super let
  • 自动实现(auto impl)
  • 面向FFI的函数重载
  • 可变参数(Variadic parameters)
  • Move / Destroy / Forget 三件套trait
  • impl Fn(...)类型里的命名参数

楼主的担忧很朴素:如果这些提案全部落地,Rust将新增几十个关键字和保留字,语法和语义复杂度会大幅上升。而Rust最打动人的地方之一,恰恰是“语言的每一部分都天然契合彼此”——这种正交性一旦被打破,Rust就有滑向“新时代C++”的风险。

他还特别点名了FFI(跨语言互操作)相关的提案:许多复杂改动的出发点是“更方便地对接C/C++代码”,但楼主直言,为了兼容日益过时的语言而牺牲Rust本身的简洁性,这在他看来是一种“本末倒置”。

混战开始:三种态度

帖子发出去不到半天,评论区就自然分成了几派。

第一派:技术限制派。一位用户指出,清单里大多数提案其实源于真实的技术局限,比如显式尾调用能让字节码解释器快出一大截;Drop语义控制解决的是“文件关闭失败”这种现实中确实无解的痛点。这一派的共识是:这些特性大概率只影响特定领域的开发者,平时“眼不见为净”。

第二派:反对复杂化派。这一派用户提出了针锋相对的观点,围绕Move/Destroy/Forget三件套展开了一场高质量拉锯战——有人认为它会让类型系统更复杂,也有人反驳说,这套机制恰恰是为了未来彻底淘汰std::pin这个公认的“复杂度重灾区”,长期看反而是在做减法。

第三派:坚定支持派。这类用户的发言也获得不少点赞,核心观点是:Rust的复杂度和C++的复杂度根本不是一回事——C++的问题在于反复为同一个问题造多个轮子,而Rust的新特性大多是解决彼此独立的新问题,不易牺牲整体一致性。他的结论很干脆:“让Rust更复杂,也就是让Rust更好。”

高赞神评:一套“三轴判断法”

这场讨论里最出圈的一条回复提出,判断一个新特性是不是“甜蜜的负担”,可以从三个维度去看:

  1. 广泛 vs 狭窄:一次性解决一类共性问题的“广”特性,比反复打补丁解决单点问题的“窄”特性更值得加。
  2. 解锁能力 vs 语法糖:真正“解锁”此前做不到的能力,才配得上增加的复杂度;单纯让写法更顺手的语法糖,性价比要打问号。
  3. 新增 vs 修补:有些看似“新特性”的提案,实际上是在“打补丁”——去掉了此前必须硬记在脑子里的例外情况,反而是在给语言做减法。

按这套标准,这条回复明确表示自己并不看好命名/默认参数、闭包里的use语法糖,但会非常支持显式尾调用和可变参数——理由是它们属于“广泛且解锁能力”的类型。

这套框架后来被多位评论者反复引用,成了这场讨论里最接近“共识”的分析工具

官方下场:语言团队怎么说

最有分量的回复,来自ID为JoshTriplett的用户——他在个人标签里标注了rust、lang、libs、cargo,是Rust语言团队的成员。他特别说明,以下发言仅代表个人,不代表团队整体立场。

他给出的解释大致可以归纳为三类:

  • 一部分特性正是为了“简化”而加。比如视图模式(view patterns)之类的提案,解决的是新人从其他语言迁移到Rust时最容易“劝退”的痛点,本质是把用户本来就要自己想办法解决的问题,用更规整的方式收编进语言里。
  • 一部分特性团队自己也很谨慎,正在反复权衡怎么落地。他举了函数重载的例子:团队希望把它严格限定在FFI兼容场景,而不是变成C++那种任意重载。
  • 一部分特性大概率不会采纳,或者只以“现有特性组合”的方式变相实现。比如命名/默认参数,他透露团队更倾向于鼓励开发者用“结构体参数+默认字段值”的组合方案去解决,因为这只是已有能力的自然延伸,而不是引入一整块全新的复杂语法面。

一组数据:不是孤例

讨论过程中,还有网友甩出了一个佐证:根据2026年3月发布的Rust官方State of Rust年度调查结果,约有40%的受访者表达了与楼主类似的担忧,认为语言应该优先做“简化”而不是“加法”。

这也从侧面说明,这篇帖子戳中的并不是一个人的焦虑,而是一部分Rust用户群体真实存在的集体情绪。

不过也有老用户站出来“降噪”。一位自称从2014年开始写Rust,本人也是servo、rust、clippy等项目的贡献者表示,类似的“塌方警报”几乎每年都会响一次,但过去十年里从未真正发生过——原因是Rust的RFC流程本身就设有相当长的观察期和“复杂度预算”审查机制,大多数提案要经过数年讨论才可能落地,中途夭折的比例极高。

小结

这场讨论最有意思的地方,或许不在于谁对谁错,而在于它精准地呈现了一个悖论:

一门语言越成功、用户越多,等待被解决的“长尾需求”就越多;而每一个长尾需求背后,都有一小撮开发者真心觉得“这个特性必须加,不然我没法用”。楼主在帖子里自己也承认这一点——他并不否认这些提案大多“确实有用”,只是担心把它们全部叠加起来,会不会在某个临界点上,让Rust从“精巧”滑向“臃肿”。

C++用了近三十年时间,才从"简洁的C升级版"变成今天动辄两千页标准、多套编译器实现互不兼容的庞然大物。Rust才十年历史,走到今天这一步是否也是必然,恐怕没人能给出确定答案。

但至少从这篇帖子的讨论质量来看,Rust社区对这个问题的警觉程度,本身可能就是它区别于前辈的地方。


本文编译整理自Reddit r/rust板块讨论串《My concerns about the future of Rust》,原帖及评论区观点归属原作者所有。https://www.reddit.com/r/rust/comments/1wat0px/my_concerns_about_the_future_of_rust/ 



如果本文对你有所帮助,请帮忙点赞、推荐和转发

点击下面标题,阅读更多干货!

-  Rust官方宣布启动函数重载实验,一个特性打通 C++ 互操作最后一公里

- 一只机器鸭子,用 Rust 写了个“大脑”:拆解 Hugging Face 爆款机器人 Microduck

- Token效率鄙视链被打脸:实测证明,Rust才是AI编程时代的隐藏赢家

- Rust官方砸半年时间访谈70+人:学Rust到底卡在哪,AI又帮上了多少忙?

- 事不过三,我们为什么总是学不好 Rust?

- 平起平坐!Rust成微软Tier-1核心语言

- Rust重写运动,到底是真香还是被吹爆?




🚀「Go & AI 精进营」已全面升级为「Go, Rust & AI 精进营」知识星球,快来加入星球,开启你的技术跃迁之旅吧!

我们致力于打造一个高品质的 现代系统级开发(Go / Rust)  前沿 Agentic AI 工程实践 平台。在这里,你将获得:

  • 体系化 Go 核心进阶内容: 深入「Go原理课」、「Go进阶课」、「Go避坑课」等独家深度专栏,夯实你的 Go 语言内功。
  • 硬核 Rust 专项实战赋能: 同步解锁全年 54 讲独家专栏「事不过三:Rust 系统级入门实战课」,通过 4 个里程碑项目(命令行工具、KV引擎、多线程Web服务、异步Redis),带你彻底攻克所有权与并发高山,拿下 Rust 核心壁垒。
  • 前沿 Agentic AI 落地实践: 紧跟时代步伐,系统学习「Agent开发实战课」、「Agentic软件工程课」、「Claude Code开发工作流实战」、「Harness工程设计」等,掌握 AI 时代的系统架构新技能。
  • 星主 Tony Bai 亲自答疑: 遇到疑难杂症?星主第一时间为你深度解析,扫清 Go、Rust 与 AI 实践中的学习与工程障碍。
  • 高活跃 Gopher & Rustacean 交流圈: 与众多优秀的技术极客探讨系统设计、分享前沿心得、碰撞思想火花。
  • 独家资源与专栏首发: 博客深度长文、专栏教程更新、精选技术资源,星球会员第一时间触达,加入星球即可免费阅读全套进阶专栏!

衷心希望「Go, Rust & AI 精进营」能成为你拓宽技术边界、持续精进与交流的温暖港湾。让我们在此相聚,享受代码与工程之美以及技术精进的快乐!欢迎你的加入!👇

【声明】内容源于网络
0
0
TonyBai
Tony Bai的技术世界 (tonybai.com)。 不满足于“会用”,我们追求“精通”。 专注Go语言底层原理、高质量工程实践与云原生架构,探索Go与AI等前沿结合。 欢迎对技术有追求的Gopher同行,关注我,与Go一同进化。
内容 1197
粉丝 0
TonyBai Tony Bai的技术世界 (tonybai.com)。 不满足于“会用”,我们追求“精通”。 专注Go语言底层原理、高质量工程实践与云原生架构,探索Go与AI等前沿结合。 欢迎对技术有追求的Gopher同行,关注我,与Go一同进化。
总阅读8.7k
粉丝0
内容1.2k