← 返回首页

Rust 的真实挑战:2025 调查揭示的工程现实

2026/3/22

Rust 软件工程 深度分析

Rust 的真实挑战:2025 调查揭示的工程现实

Rust 团队深入访谈 50+ 开发者后发现:挑战不是”学习曲线陡峭”那么简单。


打破迷思:不是”学会了就顺畅”

传统观点认为 Rust 有陡峭的学习曲线,但一旦”开窍”就一帆风顺。

官方研究的发现:某些挑战确实随经验消失,但它们被新的挑战取代。

经验阶段主要挑战
初学者所有权、借用检查
中级生态系统导航、选择困难
专家异步复杂性、编译时间
特定领域安全认证(安全关键)、资源限制(嵌入式)

“如果所有改进都完成了,我会是一个快乐的 Rust 程序员。如果没有,我仍然会是 Rust 程序员。” —— 采用 Rust 的工程经理


四大通用挑战

1. 编译性能:所有人的生产力税

每个群体——从新手到专家、从嵌入式到 Web——都把编译时间列为生产力障碍:

场景编译时间
Java~100ms
Rust(小改动)5s - 1min
GUI 调整 padding8-10s
安全关键构建25-30min

关键洞察

问题不是绝对时间,而是开发速度税——长编译时间对代码迭代周期有强烈负面影响。

任何能减少迭代时间的东西——热重载、快速调试构建、更快链接——都会有不成比例的影响

社区解决方案

2. 借用检查:先苦后甜

确实是”初学者问题”——高度经验的开发者几乎不再抱怨借用检查。

但学习过程因背景而异:

背景挑战
高级语言(TS/Python)需要同时学习系统概念 + Rust
C++ 开发者需要忘掉”大类做一切”的模式
系统程序员想要 Rust 直接说”这是指针”

有趣的发现:同时学习 Rust 和 C++ 的学生反而更容易——两边都是智能指针的概念。

3. 异步复杂性:“三个火枪手”问题

很多人选择完全避免异步——只写同步 Rust。

为什么?

“异步 Rust 感觉完全不同…不只是不同的语言,是不同的编程模型。” —— 安全代理开发者

“当 Rust 同时是异步、泛型、有生命周期时,类型变得如此复杂,你基本上得成为某种 Rust 之神。” —— 有生产经验的软件工程师

三大痛点

  1. 感觉未完成:相比同步 Rust,异步缺少语言特性
  2. 生态碎片化:选了一个库就锁定了 Tokio 或其他运行时
  3. 文档偏向同步:大部分教程聚焦同步代码

4. 生态系统导航:选择瘫痪 + 隐性知识

问题不是缺少库——是选择太多,而且选择需要专业知识。

“使用某个 crate 的知识是某种隐性知识,你通过经验积累。” —— Web 开发者

Rust 项目有意不指定官方 crate,避免扼杀创新。但这个权衡可能需要重新评估。


领域特定挑战

嵌入式:每个约束都重要

  • 拉入一个 crate 就拉入很多东西,无法控制
  • 不能使用标准集合(如 HashMap)
  • 调试构建太大,被迫使用优化构建,又难以调试

安全关键:稳定 vs 创新的张力

“我们没有像 C++ 那样的工具来测量其安全关键性。” —— 安全系统工程师

认证工具缺失 + 组织不信任”新技术” = 采用障碍

GUI 开发:编译时间扼杀迭代

“我们有个 UI 框架就是 Rust 代码,所以当你想调整一个盒子的 padding…10 秒以上的迭代周期是种痛苦。” —— GUI 开发者


2025 State of Rust 调查亮点

最想要的功能

功能状态
let chains✅ 已稳定
async closures✅ 已稳定
generic const expressions🔥 最想要
improved trait methods🔥 热门

编辑器趋势

编辑器趋势
Zed📈 大幅上升
Helix📈 良好增长
带 Agent 支持的编辑器📈 上升中
VSCode / IntelliJ📉 份额被侵蚀

致敬:还有 11 个开发者用 Atom 👋

学习资源偏好

  • 官方文档:首选
  • 研究代码本身:第二
  • LLM 工具:上升趋势(词云显示)

边缘群体参与

群体比例
LGBTQ+10.59%
神经多样性9.94%
跨性别7.72%
女性6.43%

“虽然有些数字略有改善,但这仍然表明只有极小比例的边缘群体成员进入了我们的项目。“


官方建议

1. 把编译性能作为一等公民

不只是实现细节,而是语言核心关注点。

2. 投资生态系统导航和兼容性

帮助用户找到合适的 crate,同时提高 crate 间兼容性。

3. 解决学习多样性

根据背景(C/C++ vs 高级语言)和领域定制学习路径。

好的例子Embedded Rust Book

4. 缩小同步和异步 Rust 的差距

  • 稳定 async fn in dyn traits
  • 改进异步代码的编译器错误
  • 在 std 中包含基础异步 trait 和函数

我的观察

对 Rust 使用者

  1. 编译时间是最大的生产力杀手——投资增量构建、热重载
  2. 异步 Rust 是可选项——如果不需要,别强迫自己
  3. 经验会改变你的痛点——今天困扰你的,明天可能不是问题

对工具开发者

  1. GUI/CLI 工具开发者最痛苦——需要快速迭代,Rust 目前不适合
  2. 热重载是杀手级功能——subsecond 这样的项目值得关注
  3. Agent 支持的编辑器正在侵蚀 VSCode——Claude Code、Cursor 等

对团队采用

  1. 不是”学会就顺畅”——要预期不同阶段的不同挑战
  2. 领域很重要——嵌入式、安全关键、GUI 有各自的痛点
  3. 但人们仍然选择 Rust——“如果有改进更好,没有我仍会用”

结论

Rust 的挑战比”陡峭学习曲线”的叙事更微妙。

它们是领域特定的随经验演变

理解这些模式对 Rust 的持续增长至关重要。好消息是,识别这些模式给了我们改进的方向。

“承认专业技能梯度、优先考虑编译性能、创建更好的生态系统导航、解决背景相关挑战——这些可以帮助 Rust 实现其承诺:赋能每个人构建可靠、高效的软件。“


链接

📝 文章反馈

你的反馈能帮助我写出更好的文章