Rust 2026 经验谈 - Rust 2026 展望

4498 字
22 分钟
Rust 2026 经验谈 - Rust 2026 展望

四十篇文章,从 Edition 2024 到嵌入式 Rust,我们走过了 Rust 工程化实践的每一个重要领域。作为收官之作,本文不再向后看,而是向前看——Rust 2026 及以后,语言特性会怎么演进?生态会朝什么方向?Rust 在行业中的渗透率会达到什么水平?Rust 治理如何应对规模化挑战?

Rust 1.96.0 已稳定特性(2026-05-28)#

Rust 1.96.0 带来了多项重要特性的稳定化,以下特性已从 nightly/预览状态转为稳定可用:

assert_matches! / debug_assert_matches!#

模式匹配断言宏正式稳定。相比 assert!(matches!(..)),提供更好的错误信息(打印实际值和模式)。不在 prelude 中,需 use core::assert_matches;。详见 009 篇。

core::range::Range* 类型(RFC 3550)#

新的 core::range::RangeRangeFromRangeInclusive 等类型实现了 Copy + IntoIterator(而非 Iterator),消除了旧 range 类型非 Copy 的痛点。未来 edition 中 0..1 语法将产生新类型,旧类型移至 core::range::legacy::*。详见 001 篇。

From<T> for AssertUnwindSafe<T> / LazyCell<T, F> / LazyLock<T, F>#

  • From<T> for AssertUnwindSafe<T>:使 catch_unwind 的闭包包装更自然,泛型代码中无需手动 AssertUnwindSafe(|| ...)。详见 011 篇。
  • From<T> for LazyCell<T, F> / From<T> for LazyLock<T, F>:允许从已计算值直接构造惰性容器,避免重复初始化闭包。

WebAssembly 目标链接器行为变更#

Rust 1.96.0 改变了 WebAssembly 目标的链接器行为:不再默认传递 --allow-undefined 给链接器。这意味着:

  • 之前:未定义的符号会自动转为 WASM import,静默通过链接
  • 现在:未定义符号是链接错误,必须显式声明为 import
// 之前:未声明的 extern 函数静默成为 WASM import
unsafe extern "C" { fn external_fn() -> i32; } // 可能不是你想要的
// 现在:需要显式声明或使用 wasm-bindgen 管理导入
// Edition 2024 要求 extern blocks 标记为 unsafe extern

影响:这个变更提高了 WASM 链接的正确性——之前未定义符号静默转为 import 可能掩盖拼写错误或遗漏的链接依赖。如果你使用 wasm-bindgen,通常不受影响(它会正确管理导入)。但如果你手动管理 WASM 导入或使用 wasm-pack,可能需要调整构建配置。


1.80 -> 1.96 期间已经落地的关键能力#

async closures(Rust 1.85.0 已稳定)#

异步闭包曾经是异步生态里最别扭的缺口之一。Rust 1.85.0 已经稳定了 async closures 以及 AsyncFn / AsyncFnMut / AsyncFnOnce trait,因此教程中不能再把它写成未来特性:

async fn with_async_callback(cb: impl AsyncFn(i32) -> i32) {
let result = cb(42).await;
println!("{result}");
}
let closure = async |x: i32| -> i32 {
some_async_work(x).await + 1
};

为什么重要:异步闭包是构建高阶异步组合子的基础。过去许多 API 需要手写 Future 类型或 Box<dyn Future>,现在可以逐步收敛到更自然的闭包写法。

let chains(Rust 1.88.0 已稳定)#

let chains 允许在 if / while 条件中把布尔表达式和 let 模式链起来:

if request.is_authenticated()
&& let Some(user) = request.user()
&& user.is_active()
{
serve(user).await;
}

这类代码过去通常要写成嵌套 if let 或提前 match,现在 stable 上可以直接表达“所有条件同时成立并绑定变量”。

即将稳定或仍在推进的语言特性#

return-type notation(RTN)#

RTN 允许在 trait bound 中引用函数的返回类型——这对 async trait 至关重要:

// 现在(Edition 2024 稳定):async fn in trait 直接可用
trait Service {
async fn process(&self, req: Request) -> Response;
}
// 但高阶约束仍需要 RTN——指定返回的 Future 的类型
fn compose<S1, S2>(s1: S1, s2: S2)
where
S1: Service,
S2: Service,
<S1 as Service>::process(..): Future<Output = Response>, // RTN 语法
{
// ...
}

为什么重要:RTN 是 async trait 的补全。async fn in trait 已经在 Edition 2024 中稳定,但高阶约束(如”两个 service 的 process 返回同一类型”)需要 RTN。

当前状态:RTN 在 nightly 上实验性可用,是 2026 年的重点稳定目标,但尚未稳定。

effects system#

Effects system 是 Rust 类型系统的下一阶段演进——它统一了 constasyncpanic 等效果标记:

// 现在:const fn 是特殊语法
const fn fibonacci(n: u64) -> u64 {
if n <= 1 { return n; }
fibonacci(n - 1) + fibonacci(n - 2)
}
// 未来:effects 统一后
fn fibonacci<const constness: IsConst>(n: u64) -> u64
where Self: constness
{
if n <= 1 { return n; }
fibonacci(n - 1) + fibonacci(n - 2)
}
// 这意味着:
// - const fn 自动推导
// - async fn 是效果而非关键字
// - panic handling 可以在类型层面约束
// - 未来可以添加更多效果(如 IO、non-terminating)

为什么重要:Effects system 是 Rust 类型系统的长期方向——它让”这个函数是否可能 panic”、“是否可能在编译时执行”成为类型约束而非 ad-hoc 语法。这将极大增强 API 的表达力。

当前状态:Effects system 是长期项目(keywords generics / keyword generics),2026 年可能看到 MVP 的 nightly 实现,稳定尚远。

gen blocks#

Generator blocks(gen 块)是 Rust 的协程语法——它允许用迭代器风格写生成器:

// 现在:手动实现 Iterator
struct FibIter {
a: u64,
b: u64,
}
impl Iterator for FibIter {
type Item = u64;
fn next(&mut self) -> Option<u64> {
let result = self.a;
self.a = self.b;
self.b = result + self.b;
Some(result)
}
}
// Rust 2026:gen blocks
fn fibonacci() -> impl Iterator<Item = u64> {
gen {
let mut a = 0u64;
let mut b = 1u64;
loop {
yield a;
let next = a + b;
a = b;
b = next;
}
}
}
// async gen:异步生成器
fn async_lines(stream: TcpStream) -> impl AsyncIterator<Item = String> {
async gen {
let reader = BufReader::new(stream);
let mut line = String::new();
loop {
line.clear();
match reader.read_line(&mut line).await {
Ok(0) => break,
Ok(_) => yield line.clone(),
Err(_) => break,
}
}
}
}

为什么重要:gen blocks 消除了实现 IteratorStream 的手动状态机样板。它是 Rust 异步生态的”最后一英里”——有了 async genStream 的创建将和 Iterator 一样简单。

当前状态gen blocks 在 nightly 实验性可用(#![feature(gen_blocks)]),截至 Rust 1.96 仍为 nightly,稳定时间未定。

trait aliases#

Trait aliases 允许给一组 trait bound 起名字:

// 现在:重复的复杂 bound
fn process<T: Clone + Send + Sync + 'static>(item: T) { }
fn store<T: Clone + Send + Sync + 'static>(item: T) { }
fn validate<T: Clone + Send + Sync + 'static>(item: T) { }
// Rust 2026:trait aliases
trait Sharable = Clone + Send + Sync + 'static;
fn process<T: Sharable>(item: T) { }
fn store<T: Sharable>(item: T) { }
fn validate<T: Sharable>(item: T) { }
// 更实际的例子
trait Runnable = FnMut() -> bool + Send + 'static;
trait Streamable = futures::Stream + Send + Unpin + 'static;

为什么重要:在 Rust 生产代码中,复杂 trait bounds 是常态——5-10 个约束组合的 where 子句随处可见。Trait aliases 让这些声明可复用、可读。

当前状态:trait aliases 在 nightly 上长期可用(#![feature(trait_alias)]),截至 Rust 1.96 仍为 nightly,稳定进度慢是因为需要解决与类型推断的交互问题。

特性稳定时间线预估#

特性Nightly 可用稳定版本影响
assert_matches! / debug_assert_matches!20221.96.0中——更好的模式匹配断言
core::range::Range* 类型20231.96.0中——Copy range 消除 clone
From<T> for AssertUnwindSafe / LazyCell / LazyLock20241.96.0低——API 易用性提升
async closures20241.85.0高——消除 async 样板
return-type notation20242026 H2(预计)高——补全 async trait
gen blocks2024未定(仍为 nightly)中——简化生成器
trait aliases2019未定(仍为 nightly)中——简化 trait bound
effects system20252027+极高——类型系统革命
let chains20231.88.0中——简化条件逻辑
arbitrary self types20232026(预计)低——智能指针方法

crates.io 趋势#

下载量增长#

crates.io 的下载量在 2024-2026 年间持续加速:

2023 年:约 300 亿次总下载
2024 年:约 450 亿次总下载(+50%)
2025 年:约 650 亿次总下载(+44%)
2026 年:预计 900+ 亿次总下载(+38%)
日均下载:
2023:~8000 万/天
2024:~1.2 亿/天
2025:~1.8 亿/天
2026:~2.5 亿/天(预估)

增长动力来自三方面:Rust 在企业后端的渗透、WebAssembly 生态的扩展、嵌入式/IoT 的新增场景。

热门新 crate(2024-2026)#

框架层:
- axum 0.8+ → 生态最完善的 Rust web 框架
- loco → 类 Rails 的全栈框架(基于 axum + SeaORM)
- salvo → 另一个快速成长的 web 框架
异步运行时:
- tokio 1.x → 绝对主导地位
- embassy → 嵌入式异步运行时,增速最快
数据库:
- sqlx 0.8 → 编译时 SQL 检查
- sea-orm 1.x → 异步 ORM
- redb → 纯 Rust KV 数据库
可观测性:
- tracing 0.1 → 事实标准
- opentelemetry-rust 0.27+ → 三信号稳定
构建工具:
- cargo-lambda → AWS Lambda 开发
- miette → 诊断报告(替代 anyhow 的显示层)
- cargo-modules → 可视化 crate 结构
AI/ML:
- candle → HuggingFace 的 Rust ML 框架
- burn → Rust 深度学习框架
- tract → ONNX/TensorFlow 推理

crate 质量趋势#

正面趋势:
1. 文档覆盖率提升——docs.rs 的 crate 文档越来越完善
2. MSRV 策略普及——更多 crate 声明最低支持 Rust 版本
3. CI 标准化——cargo-hack、cargo-ci-clean 实现多版本测试
4. 1.0 发布增加——生态走向稳定
需要关注:
1. 依赖传递膨胀——web 框架间接依赖上百个 crate
2. 安全审计覆盖——只有约 30% 的热门 crate 经过 cargo-audit
3. crate 废弃管理——大量 0.x crate 长期不更新

Rust 在行业中的落地案例#

Android#

Google 从 2019 年开始在 Android 中引入 Rust,2024-2026 年进展:

- Android 14:~200 万行 Rust 代码
- Android 15:~500 万行 Rust 代码
- Android 16(2025):~800 万行 Rust 代码
- 新的 HAL 实现:优先用 Rust
- Binder IPC:Rust 绑定
- 关键成果:Rust 代码的内存安全漏洞率 = 0(相比 C/C++ 的显著降低)
- 策略:新原生代码优先 Rust,不重写已有 C++ 代码

Linux 内核#

Rust 在 Linux 内核中的地位从”实验”走向”生产”:

- 6.1(2022):初始 Rust 支持,仅一个模块
- 6.8(2024):更多驱动可用 Rust 编写
- 6.12(2024):ARM64 Rust 支持
- 6.14+(2025):网络设备驱动的 Rust 绑定
- 实际驱动:Google 的 nova-drivers(GPU)、Apple M1 驱动探索
- 争议:Rust-for-Linux 社区与内核社区的磨合仍在继续
- 关键分歧点:unsafe 包裹、抽象层风格、构建系统

Windows#

Microsoft 在 Windows 中推进 Rust:

- Windows 内核:开始用 Rust 重写部分驱动
- WinRT/Windows API:官方 Rust 绑定(windows crate)
- Azure:多个服务用 Rust 重写(如 DNS 服务)
- 安全驱动:新安全敏感组件优先用 Rust
- DevBox:开发环境工具链中包含 Rust

Cloudflare Workers#

Cloudflare Workers 是 Rust 在边缘计算中最成功的落地:

- Workers 运行时基于 V8(Rust 编译为 Wasm)
- 100+ 个生产服务用 Rust 编写
- 关键优势:冷启动 < 5ms、内存安全、Wasm 沙箱
- 代表项目:
- Cloudflare DNS resolver(1.1.1.1)
- Cloudflare Firewall Rules
- Cloudflare WARP 客户端(部分 Rust)

Discord#

Discord 是最早大规模使用 Rust 的科技公司之一:

- 2019:用 Rust 重写 Go 的读状态服务(15x 延迟降低)
- 2020-2024:扩展到更多核心服务
- Presence 服务
- Typing indicators
- Permission 计算
- 经验教训:
- Rust 的性能优势在 GC 压力大的场景最显著
- 开发效率比 Go 低 20-30%,但运维成本大幅降低
- 团队从"抗拒"到"拥护"的转变约需 6 个月

Dropbox#

Dropbox 的 Rust 实践聚焦于文件同步引擎:

- Nucleus:Dropbox 桌面客户端的文件同步引擎(C++ → Rust 重写)
- 重写动机:
- C++ 的内存安全漏洞难以根除
- 并发模型太复杂(手写锁 + 回调地狱)
- Rust 的所有权模型天然适合同步引擎
- 结果:
- 崩溃率降低 50%+
- 同步冲突减少 30%+
- 开发迭代速度持平(重写后)

更多案例速览#

公司/项目用途Rust 规模
AmazonFirecracker(微 VM)、AWS Lambda Runtime核心服务
FacebookMononoke(Mercurial 服务器)、Source Control数百万行
GitHubHoverfly(代码搜索)、Semantic基础设施
1Password核心密码管理引擎跨平台核心
Figma实时协作服务器(C++ → Rust)性能关键路径
DenoJS/TS 运行时整个项目
Linkerd服务网格代理核心代理
Tikv分布式 KV 存储整个项目
Meilisearch搜索引擎整个项目

Rust 基金会与治理#

Rust 基金会发展#

2021:Rust 基金会成立(白金会员:AWS、Google、Microsoft、华为、Mozilla)
2022:首批项目资助(CraneLift、rust-analyzer、bindgen)
2023:Security Initiative 启动(安全审计 + 漏洞响应)
2024:
- 基金会成员扩展到 50+ 家公司
- RustConf 规模 800+ 人
- 首届 Rust Nation(伦敦)
2025:
- 基金会年度预算超 200 万美元
- 全职技术项目管理员
- crate 审计基金
2026:
- 基金会从"资助者"转向"方向引导者"
- 安全合规认证推进
- 与 ISO/CENELEC 标准对接(安全关键领域准入)

治理挑战与改革#

挑战 1:编译器团队 vs 语言设计团队
- 编译器实现是瓶颈——很多特性 nightly 可用但无法稳定
- 改革:增加编译器团队人力,建立"稳定化冲刺"机制
挑战 2:RFC 流程的效率
- RFC 周期:从提议到稳定平均 2-3 年
- 改革:minor features 走"FCP(Final Comment Period)快通道"
挑战 3:Libs 团队的碎片化
- std 库特性添加太保守(如 stabilized io_error_other 花了 3 年)
- 改革:API 工作组定期评审高频需求
挑战 4:社区分裂风险
- "保守派" vs "激进派":关于语言复杂度的根本分歧
- 改革:通过 Edition 机制给双方空间
挑战 5:供应链安全
- crates.io 的恶意 crate 风险(2024 年有数起 typosquatting 事件)
- 改革:crate 审核、依赖锁定、安全审计自动化

贡献者生态#

Rust 编译器贡献者:~400 活跃(每月 1+ PR)
Rust 标准库贡献者:~150 活跃
crates.io 发布者:~15 万(累计)
crates.io 活跃维护者:~3 万(最近 6 个月有更新)
贡献者增长趋势:
2023:约 2000 新贡献者
2024:约 2800 新贡献者
2025:约 3500 新贡献者(预估)

Rust 的未来方向思考#

1. 复杂度管理#

Rust 正站在一个十字路口:语言特性越来越多,学习曲线越来越陡。async closures、effects system、gen blocks——每一个都有价值,但加在一起意味着新人更难上手。

我的观点:
1. 特性多不是问题,特性之间的交互才是问题
2. Edition 机制是好工具——可以在新 Edition 中简化旧写法
3. "渐进式复杂度"是关键:80% 的代码只用 20% 的特性
4. 工具链需要跟上:rust-analyzer 的类型提示、clippy 的复杂度 lint
5. 教育资源需要分层:"Rust 入门" 与 "Rust 高级类型系统" 应该是两本书

2. 编译时间#

编译时间仍然是 Rust 最大的工程痛点:

2024 年进展:
- recompilation 优化:incr-comp 稳步改进
- parallel frontend:逐步启用(-Zthreads=N)
- mold/lld 链接器:链接时间降低 50%+
2026 年预期:
- parallel frontend 默认启用
- recompilation 进一步优化(尤其是 macro 展开)
- 但根本性的编译时间问题不会解决——Rust 的类型系统复杂度决定了编译是 O(n²)+
长期方向:
- 增量编译到函数粒度
- 远程编译缓存(sccache、distant)
- 更快的 trait 求解器

3. 互操作性的下一步#

当前:Rust ↔ C 互操作成熟(FFI + bindgen/cbindgen)
进行中:
- Rust ↔ C++ 互操作(cxx、autocxx)——2026 年大幅改善
- Rust ↔ Swift 互操作(Swift 5.9+ 原生支持)
- Rust ↔ Kotlin 互操作(JVM FFI)
- Rust ↔ Python(PyO3 0.22+,性能和易用性大幅提升)
未来:
- 组件模型(Component Model)统一 Wasm 互操作
- 跨语言共享类型定义(wit 文件)
- Rust 成为"系统编程的通用粘合层"

4. Rust 在安全关键领域的道路#

当前状态:
- Rust 未被任何安全认证标准(DO-178C、ISO 26262)认可
- Ferrocene(Rust 的认证分支)正在推进 ISO 26262 认证
- Ada/SPARK 仍然是航空航天的主流
2026 年预期:
- Ferrocene 获得 ASIL-D(汽车)认证
- 航空领域开始试点 Rust(辅助工具,非飞控)
- 医疗器械领域:Rust 用于非植入式设备的固件
长期:
- Rust 成为安全关键领域的第二选择(仅次于 Ada/SPARK)
- 认证成本是最大障碍——Rust 编译器的认证需要数百万美元

5. AI 时代的 Rust#

Rust 在 AI/ML 中的角色:
1. 推理引擎——candle、tract、burn 提供纯 Rust 推理
2. 数据管线——Rust 的高吞吐在数据预处理中有优势
3. 模型服务——Moirai、candle-pyo3 提供 Rust + Python 混合方案
4. AI 基础设施——tensor 存储、分布式调度
为什么 Rust 不太可能取代 Python 做模型训练:
- 训练生态在 Python 上太成熟
- GPU kernel 用 CUDA/ROCm(C++),上层 API 用 Python
- Rust 会在推理和基础设施层找到定位
2026 年的 AI/Rust 格局:
- 推理:Rust 在边缘推理(Wasm + 小模型)中有独特优势
- Agent 框架:Rust 的并发模型适合高并发 Agent 服务
- MLOps 工具:用 Rust 重写性能关键的数据管线

6. 我的 2026 预言#

保守预测(90% 置信度):
1. async closures 稳定 ✅(已在 1.85.0 稳定)
2. Rust 年下载量超 900 亿
3. Android 中 Rust 代码超 1000 万行
4. Linux 内核至少 10 个 Rust 驱动
5. crates.io 总 crate 数超 20 万
中等预测(60% 置信度):
6. gen blocks 稳定
7. trait aliases 稳定
8. 至少一家大型银行用 Rust 做核心交易系统
9. Rust Conf 参会人数超 1000
10. Ferrocene 通过 ISO 26262 ASIL-D
大胆预测(30% 置信度):
11. effects system 出现在 nightly
12. Rust 成为 AWS Lambda 的第一语言(超越 Node.js)
13. Rust 编译时间减少 50%(相比 2024 基线)
14. Rust 被纳入大学计算机必修课(至少一所)

系列结语#

四十篇文章,我们走过了 Rust 工程化实践的完整版图:

  1. 基础篇(001-005):Edition 2024、工具链、项目工程、CI/CD
  2. 所有权篇(006-013):所有权经验、生命周期、类型状态、trait 高级、枚举模式匹配、错误处理三层
  3. 异步篇(014-019):async/await 内幕、Tokio、Stream、FFI、踩坑、生态
  4. 并发篇(020-023):Send/Sync、无锁、Channel、共享状态
  5. 元编程篇(024-027):声明宏、过程宏、宏选型、const generics
  6. Unsafe 篇(028-032):Unsafe 哲学、裸指针、FFI 双向、审查清单
  7. 应用篇(033-040):序列化、网络编程、数据库、可观测性、测试、性能、嵌入式、展望

Rust 的旅程才刚刚开始。语言在进化,生态在成熟,社区在壮大。2026 年的 Rust 比 2020 年的 Rust 更强大、更易用、更广泛——但最核心的东西从未改变:零成本抽象、内存安全、所有权模型

这就是 Rust 的力量——不是”更快”,而是”更对”。不是”更酷”,而是”更可靠”。

愿你在 Rust 的道路上,编译通过,测试全绿,生产无忧。

支持与分享

如果这篇文章对你有帮助,欢迎分享给更多人或赞助支持!

赞助
Rust 2026 经验谈 - Rust 2026 展望
https://tinyzzh.github.io/posts/rust-2026/2026-07-10-rust_2026_040_rust_2026_outlook/
作者
TinyZ Zzh
发布于
2026-07-10
许可协议
CC BY-NC-SA 4.0

评论区

Profile Image of the Author
TinyZ Zzh
专注于高并发服务器、网络游戏相关(Java、PHP、Unity3D、Unreal Engine等)技术,热爱游戏事业, 正在努力实现自我价值当中。
公告
欢迎来到我的博客!这是一则示例公告。
音乐
封面

音乐

暂未播放

0:00 0:00
暂无歌词
分类
标签
站点统计
文章
254
分类
38
标签
318
总字数
419,217
运行时长
0
最后活动
0 天前

文章目录