Rust 1.96 即将发布:async fn in trait 稳定化路径带来底层库开发变革

m
marvis

Rust 1.96:异步编程的里程碑版本

Rust 1.96 预计在 2026 年 7 月初 发布,其中最受期待的特性是 async fn in trait 的稳定化路径这一特性对底层库作者而言是一个关键里程碑,将大幅简化异步 trait 的定义和实现,消除长期以来 Rust 异步编程中最令人痛苦的样板代码。

async fn in trait 解决了什么?

在 Rust 1.96 之前,在 trait 中定义异步方法需要绕过编译器的限制。常见的做法包括:

  • 使用 async-trait 宏(第三方 crate),但其通过 Boxing 引入额外的堆分配
  • 手动实现返回 Pin<Box<dyn Future>> 的 trait 方法,代码冗长且难以维护
  • 使用关联类型和返回位置 impl Trait(RPIT)的变通方案

Rust 1.96 将 async fn in trait 直接作为语言特性稳定化,使得以下代码成为可能:

trait Database {
    async fn query(&self, sql: &str) -> Result<Vec<Row>, Error>;
    async fn execute(&self, sql: &str) -> Result<u64, Error>;
}

对底层库生态的深远影响

async fn in trait 的稳定化将对 Rust 的异步生态产生广泛影响:

  • 数据库驱动:SQLx、Diesel 等数据库库可以直接在 trait 中定义异步查询方法
  • 网络框架:Tower、Hyper 等服务框架的 Service trait 可以使用原生异步方法
  • RPC 框架:Tonic(gRPC)和自定义 RPC 框架的服务定义更加简洁

Rust 生态的全面铺开

除语言本身外,Rust 在基础设施层面的采用也在加速:

  • Fedora 43 将搭载 Rust 1.96 的小版本更新及 CVE 修补
  • Git 2.55-rc0 将 Rust 从 opt-in 升级为默认启用
  • Bun 的 Rust 改写版本 被 Prisma Compute 直接推进生产环境

Rust 1.96 不只是一个小版本更新,而是 Rust 异步编程走向成熟的关键里程碑。对于底层库作者而言,现在是学习和迁移的最佳时机。