Rust 的真实挑战:2025 调查揭示的工程现实
2026/3/22
Rust 的真实挑战:2025 调查揭示的工程现实
Rust 团队深入访谈 50+ 开发者后发现:挑战不是”学习曲线陡峭”那么简单。
打破迷思:不是”学会了就顺畅”
传统观点认为 Rust 有陡峭的学习曲线,但一旦”开窍”就一帆风顺。
官方研究的发现:某些挑战确实随经验消失,但它们被新的挑战取代。
| 经验阶段 | 主要挑战 |
|---|---|
| 初学者 | 所有权、借用检查 |
| 中级 | 生态系统导航、选择困难 |
| 专家 | 异步复杂性、编译时间 |
| 特定领域 | 安全认证(安全关键)、资源限制(嵌入式) |
“如果所有改进都完成了,我会是一个快乐的 Rust 程序员。如果没有,我仍然会是 Rust 程序员。” —— 采用 Rust 的工程经理
四大通用挑战
1. 编译性能:所有人的生产力税
每个群体——从新手到专家、从嵌入式到 Web——都把编译时间列为生产力障碍:
| 场景 | 编译时间 |
|---|---|
| Java | ~100ms |
| Rust(小改动) | 5s - 1min |
| GUI 调整 padding | 8-10s |
| 安全关键构建 | 25-30min |
关键洞察:
问题不是绝对时间,而是开发速度税——长编译时间对代码迭代周期有强烈负面影响。
任何能减少迭代时间的东西——热重载、快速调试构建、更快链接——都会有不成比例的影响。
社区解决方案:
- subsecond crate - Dioxus 团队的热重载
- Wild linker - 快速链接器
2. 借用检查:先苦后甜
确实是”初学者问题”——高度经验的开发者几乎不再抱怨借用检查。
但学习过程因背景而异:
| 背景 | 挑战 |
|---|---|
| 高级语言(TS/Python) | 需要同时学习系统概念 + Rust |
| C++ 开发者 | 需要忘掉”大类做一切”的模式 |
| 系统程序员 | 想要 Rust 直接说”这是指针” |
有趣的发现:同时学习 Rust 和 C++ 的学生反而更容易——两边都是智能指针的概念。
3. 异步复杂性:“三个火枪手”问题
很多人选择完全避免异步——只写同步 Rust。
为什么?
“异步 Rust 感觉完全不同…不只是不同的语言,是不同的编程模型。” —— 安全代理开发者
“当 Rust 同时是异步、泛型、有生命周期时,类型变得如此复杂,你基本上得成为某种 Rust 之神。” —— 有生产经验的软件工程师
三大痛点:
- 感觉未完成:相比同步 Rust,异步缺少语言特性
- 生态碎片化:选了一个库就锁定了 Tokio 或其他运行时
- 文档偏向同步:大部分教程聚焦同步代码
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 使用者
- 编译时间是最大的生产力杀手——投资增量构建、热重载
- 异步 Rust 是可选项——如果不需要,别强迫自己
- 经验会改变你的痛点——今天困扰你的,明天可能不是问题
对工具开发者
- GUI/CLI 工具开发者最痛苦——需要快速迭代,Rust 目前不适合
- 热重载是杀手级功能——subsecond 这样的项目值得关注
- Agent 支持的编辑器正在侵蚀 VSCode——Claude Code、Cursor 等
对团队采用
- 不是”学会就顺畅”——要预期不同阶段的不同挑战
- 领域很重要——嵌入式、安全关键、GUI 有各自的痛点
- 但人们仍然选择 Rust——“如果有改进更好,没有我仍会用”
结论
Rust 的挑战比”陡峭学习曲线”的叙事更微妙。
它们是领域特定的,随经验演变。
理解这些模式对 Rust 的持续增长至关重要。好消息是,识别这些模式给了我们改进的方向。
“承认专业技能梯度、优先考虑编译性能、创建更好的生态系统导航、解决背景相关挑战——这些可以帮助 Rust 实现其承诺:赋能每个人构建可靠、高效的软件。“