Rust 入局:2026 年的生态全景

TIOBE 前十:Rust 用十一年证明了什么

2026 年 7 月,TIOBE 指数迎来 25 周年,Rust 首次闯入前十。

1.34% 的占比看起来不大,但这个数字背后是一条持续上升了十一年的曲线。从 2015 年 1.0 稳定版发布算起,Rust 的成长不是线性增长,是复合加速。

排名之外的信号

先看一组更细的数据。JetBrains 2026 年开发者生态调查显示:

指标 2024 2026 变化
主职使用 Rust 的用户比例 38% 47% +9%
将 Rust 用于个人项目的比例 52% 51% -1%
计划学习 Rust 的开发者比例 18% 22% +4%

关键变化是:越来越多的人在工作中使用 Rust,而非仅仅是兴趣探索。这代表行业正在主动拥抱 Rust。

更值得关注的使用场景分布:

  1. 系统编程仍是最大头——约 35%
  2. CLI 工具——约 20%,年增长 40%+
  3. WebAssembly——约 15%,年增长 55%+
  4. 嵌入式和 IoT——约 12%,年增长 60%+
  5. Web 后端——约 10%

CLI 工具和 WASM 的高增速值得特别关注。它们说明 Rust 正在从「底层基础设施语言」扩展到更广阔的工具生态。

为什么是现在

在 TIOBE 二十五年的历史中,从来没有一个语言像 Rust 这样,以「安全」作为核心竞争力进入前十。

安全优先的时代

过去三年的供应链安全事件把「内存安全」这个话题从开发者的技术讨论提升到了政策层面:

  • 美国 CISA 的「Memory Safety Roadmap」明确建议关键基础设施项目迁移到内存安全语言
  • 欧盟的 Cyber Resilience Act 对 C/C++ 项目的合规性要求大幅提高
  • Google 在 Android 和 Chrome 中持续推进 Rust 替换,2026 年 Android 平台已累计引入超过 500 万行 Rust 代码

安全已经不再是可选特性,而是合规要求。 这个趋势对 Rust 比任何其他语言都更有利。

基础设施的不可逆迁移

过去几年,一批重量级项目用 Rust 重写了核心组件:

# 2026 年的基础设施栈
- Linux 内核:30+ 个 Rust 模块
- Android:500 万+ 行 Rust 代码
- Cloudflare Pingora:替代 Nginx
- Discord:Go → Rust 重写关键路径
- Firefox:CSS 引擎 Servo(Rust)
- Google:Chrome 中的 QUIC 实现

这些迁移一旦完成,就没有回头路了。它们为 Rust 提供了稳定的「基座」用户群。

语言本体的进化

2026 年的 Rust 语言本身已经和 2023 年大不相同。

trait 和异步的成熟

Rust 2024 Edition 带来的改进完全落地。最大的变化是异步生态:

// 2026:trait 原生支持异步
trait DataProcessor {
    async fn process(&self, input: &[u8]) -> Result<Vec<u8>, Error>;
    async fn stream(&self) -> impl AsyncIterator<Item = Vec<u8>>;
}

不再需要 #[async_trait] 外部 crate,编译器原生支持异步 trait 方法。AsyncIterator trait 也已稳定,异步流处理变得和同步迭代一样自然。

impl Trait 在返回值位置的能力增强:

// 2026:返回复杂泛型类型不再需要 Box
fn build_pipeline() -> impl Pipeline<Input = String, Output = Result<Vec<u8>, Error>> + Send + Sync {
    Compose::new()
        .add(ParseStage::new())
        .add(TransformStage::new())
        .add(EncodeStage::new())
}

特化的有限落地

RFC 3623 在标准库内部启用了有限特化。用户层面最直观的感受是:Vec::sort 现在能根据元素类型自动选择最优排序算法。

let mut numbers = vec![3, 1, 4, 1, 5, 9, 2, 6];
numbers.sort(); // 对于整数,自动使用基数排序

这在性能敏感场景下能节省约 30% 的排序时间。

编译速度的改善

编译速度一直 Rust 的痛点。2026 年的改善是实质性的:

# Cargo.toml:2026 年的编译器优化选项
[profile.release]
lto = "thin"    # thin LTO 现在是默认推荐
codegen-units = 16
pgo = true      # 原生 PGO 支持
  • 并行前端:解析和类型检查可以多线程执行
  • 增量编译:跟踪文件粒度依赖变化
  • LTO 改进:thin LTO 在 -O2 下比 2024 年快 2 倍

测试数据:一个 50 个 crate、8 万行代码的中型项目,clean build 从 2024 年的约 6 分钟降到了约 3 分钟。

生态系统的扩张

语言的进化只是故事的一半,生态的成熟才是 Rust 进入前十的真正原因。

异步运行时

tokio 以约 85% 的市场份额形成绝对垄断。但多元化的尝试也有成功:

  • tokio:异步 I/O 的主流选择
  • smol:在嵌入式领域崛起,适合无 alloc 场景
  • glommio:基于 io_uring 的高性能运行时

tower 中间件栈已经成为 Rust 异步网络的事实标准:

use tower::{ServiceBuilder, ServiceExt};
use tower_http::{
    cors::CorsLayer,
    trace::TraceLayer,
    compression::CompressionLayer,
};

let service = ServiceBuilder::new()
    .layer(TraceLayer::new_for_http())
    .layer(CorsLayer::permissive())
    .layer(CompressionLayer::new())
    .service(handle_request);

Web 框架格局

2026 年 Rust Web 框架的生态已经相当成熟:

框架 定位 2026 年状态
axum 全栈 Web tokio 官方出品,社区最活跃,新项目首选
actix-web 高性能 HTTP 稳定维护中,存量项目仍在使用
leptos 全栈(含前端) 全栈 Rust Web 的黑马,支持 SSR
dioxus 跨平台 UI 从 Web 拓展到桌面和移动端

axum 在 2026 年已经成为 Rust Web 开发的第一选择。它的 tower::Service 设计让中间件链非常优雅:

use axum::{
    Router, routing::get,
    response::Json,
    extract::State,
};
use serde::Serialize;

#[derive(Serialize)]
struct HealthResponse {
    status: String,
    version: String,
}

#[derive(Clone)]
struct AppState {
    db: sqlx::PgPool,
}

async fn health_check(
    State(state): State<AppState>,
) -> Json<HealthResponse> {
    // 检查数据库连接
    sqlx::query("SELECT 1").execute(&state.db).await.unwrap();
    Json(HealthResponse {
        status: "ok".into(),
        version: env!("CARGO_PKG_VERSION").into(),
    })
}

#[tokio::main]
async fn main() {
    let pool = sqlx::PgPool::connect(&std::env::var("DATABASE_URL").unwrap())
        .await.unwrap();

    let app = Router::new()
        .route("/health", get(health_check))
        .with_state(pool);

    let listener = tokio::net::TcpListener::bind("0.0.0.0:3000").await.unwrap();
    axum::serve(listener, app).await.unwrap();
}

数据库生态

2026 年的 Rust 数据库生态不再是短板:

use sqlx::postgres::PgPoolOptions;
use serde::{Serialize, Deserialize};

#[derive(Debug, Serialize, Deserialize, sqlx::FromRow)]
struct User {
    id: i64,
    name: String,
    email: String,
}

async fn get_user(pool: &PgPool, user_id: i64) -> Result<User, sqlx::Error> {
    sqlx::query_as::<_, User>(
        "SELECT id, name, email FROM users WHERE id = $1"
    )
    .bind(user_id)
    .fetch_one(pool)
    .await
}

async fn create_user(pool: &PgPool, name: &str, email: &str) -> Result<User, sqlx::Error> {
    sqlx::query_as::<_, User>(
        "INSERT INTO users (name, email) VALUES ($1, $2) RETURNING id, name, email"
    )
    .bind(name)
    .bind(email)
    .fetch_one(pool)
    .await
}

sqlx 已经支持 PostgreSQL 18 的 MERGE、增量物化视图等原生特性。Sea-ORM 在 ORM 层面也变得更加成熟。

Cargo 生态里程碑

crates.io 在 2026 年 7 月拥有超过 18 万个包。虽然远不及 npm 的 300 万,但 Rust 社区的哲学是「少而精」——很多功能可以直接内联编码,而不是依赖第三方包。

Cargo 的重要更新:

# Cargo Script:直接运行 .rs 文件
cargo script run.rs

# PGO 原生支持(在 Cargo.toml 中)
# [profile.release]
# pgo = true

# Workspace 并行处理改进
cargo test --workspace --parallel

Workspace 的依赖解析和并行测试速度提升显著,大型 monorepo 的体验好了很多。

AI 与 Rust 的交叉

2026 年,AI 和 Rust 的关系在两个方向上深化。

Rust 作为 AI 推理运行时

随着端侧 AI 和边缘计算的爆发,Rust 在模型推理环节找到了独特定位:

use candle_core::{Device, Tensor};

// 加载 ONNX 模型并进行推理
fn run_inference(model_bytes: &[u8], input: &[f32]) -> Result<Vec<f32>, Box<dyn Error>> {
    let device = Device::Cpu;
    let model = candle_nn::ops::load_onnx(model_bytes, &device)?;
    let input_tensor = Tensor::from_slice(input, (1, input.len()), &device)?;
    let output = model.forward(&input_tensor)?;
    Ok(output.to_vec1()?)
}

Candle(纯 Rust ML 框架)和 Burn 让 Rust 在 ML 场景下有了自己的话语权。特别是 Candle,性能接近 PyTorch 但不需要 Python 运行时。

AI 辅助 Rust 开发

2026 年的 AI 代码工具对 Rust 的支持达到可用水平:

// 提示:实现一个线程安全的 LRU Cache
// AI 生成代码(2026 年水平):
use std::collections::HashMap;
use std::sync::{Arc, Mutex};

struct LruCache<K, V> {
    inner: Arc<Mutex<Inner<K, V>>>,
}

struct Inner<K, V> {
    map: HashMap<K, V>,
    order: Vec<K>,
    capacity: usize,
}

impl<K: Eq + Hash + Clone, V: Clone> LruCache<K, V> {
    fn new(capacity: usize) -> Self {
        Self {
            inner: Arc::new(Mutex::new(Inner {
                map: HashMap::new(),
                order: Vec::with_capacity(capacity),
                capacity,
            })),
        }
    }
    // ... get, put 实现
}

Rust 的类型系统其实比动态语言更适合 AI 代码生成——类型提供了天然约束,减少了生成结果的不确定性。

行业落地案例

说点具体的——2026 年谁在用 Rust 做什么。

系统和网络层

Linux 内核中的 Rust 支持已进入第 3 年。2026 年,已有超过 30 个内核模块使用 Rust:

// Rust Linux 内核模块(简化示意)
use kernel::prelude::*;

module! {
    type: MyDriver,
    name: "my_rust_driver",
    author: "Your Name",
    description: "A Rust kernel module",
    license: "GPL",
}

struct MyDriver;

impl KernelModule for MyDriver {
    fn init(_name: &'static CStr, _module: &'static ThisModule) -> Result<Self> {
        pr_info!("Rust driver loaded!\n");
        Ok(MyDriver)
    }
}

impl Drop for MyDriver {
    fn drop(&mut self) {
        pr_info!("Rust driver unloaded!\n");
    }
}

Cloudflare 使用 Pingora(Rust)替代 Nginx 在 CDN 层处理 HTTP 流量。Google 的 Android 团队累计编写了超过 500 万行 Rust 代码,覆盖蓝牙、WiFi、NFC 等安全敏感子系统。

WebAssembly 和边缘计算

Rust + WASM 在边缘计算领域几乎没有对手:

指标 JavaScript (V8) Rust WASM
冷启动时间 ~5ms ~0.1ms
内存占用 ~10MB ~200KB
执行效率 基线 5-10x 更快

这就是为什么 Cloudflare Workers、Fastly Compute@Edge 都在推动 Rust WASM 作为第一公民。

嵌入式与 IoT

Rust 在嵌入式领域的进展同样迅猛:

// 使用 embassy 的嵌入式 Rust
#![no_std]
#![no_main]

use embassy_executor::Spawner;
use embassy_time::{Timer, Duration};
use esp32c3_hal::gpio::{Level, Output};

#[embassy_executor::main]
async fn main(_spawner: Spawner) {
    let peripherals = esp32c3_hal::take().unwrap();
    let mut led = Output::new(peripherals.pins.gpio8, Level::Low);

    loop {
        led.set_high();
        Timer::after(Duration::from_millis(500)).await;
        led.set_low();
        Timer::after(Duration::from_millis(500)).await;
    }
}

embassy 框架让嵌入式异步编程变得直观,且 #![no_std] 特性意味着它可以在最小只有 64KB RAM 的设备上运行。

Rust 的挑战

客观地说,Rust 进前十并不代表它没有短板。

学习曲线的现实

借用检查器虽然有了更好的错误提示,但仍然不够友好:

// 一个典型的借用检查器困惑
struct Container {
    items: Vec<String>,
}

impl Container {
    fn get_first(&mut self) -> &str {
        // 编译错误:不能在可变引用后返回不可变引用
        self.items.push("new".into());  // 可变借用
        &self.items[0]                  // 不可变借用,相互冲突
    }
}

异步编程的认知负载也比其他语言高很多。除了生命周期和所有权,你还要考虑 Send、Sync、'static 和 task 取消的安全性。

编译速度的差距

虽然 2026 年改善了,但和 Go、Java 的差距依然明显:

  • Go:clean build 中型项目约 10 秒
  • Java(带 Gradle 缓存):约 20 秒
  • Rust:clean build 中型项目约 3 分钟

增量编译下差距缩小,但第一次构建的体验始终不如人意。

就业市场的结构性差异

TIOBE 前十会带来更多招聘需求,但 Rust 岗位分布很不均匀:

  • 基础设施公司(云原生、数据库、CDN):大量需求
  • 金融科技和量化交易:增长迅速
  • 一般业务开发:几乎不招

Rust 更像是 C++ 的继任者,而不是 Python/Java 的替代者。

未来展望

站在 2026 年 7 月,Rust 的未来有几个清晰的方向:

进入前八只是时间问题。Android 和 Chrome 中的 Rust 代码量还在增长,一旦这些平台的 Rust 使用率达到某个阈值,TIOBE 排名会再上一个台阶。

AI 辅助将降低门槛。2026 年 AI 代码工具对 Rust 的支持已经很好。Rust 的严格类型系统对 AI 来说其实是利大于弊——编译器可以验证 AI 生成的代码是否安全,减少了幻觉带来的问题。

边缘计算是增量市场。Serverless WASM 市场年增速超过 60%,Rust 在这个领域几乎没有真正的竞争对手。

更多「大龄」项目会考虑 Rust。随着越来越多 C/C++ 核心库的维护者退休或转向,安全性和可维护性将成为替换决策的主导因素,而这恰恰是 Rust 的优势区。

结语

回到最初的问题:Rust 凭什么杀进 TIOBE 前十?

不是靠炒作,不是靠杀手级应用。是十一年如一日在正确的时间做正确的事——内存安全、零成本抽象、没有 GC 的开销、对 LLVM 和 WASM 的优秀支持。这些特质在 2015 年是「异类」,在 2026 年是「先见之明」。

另一个角度:Rust 的增长几乎是「被动的」——不是开发者主动选择了它,而是行业依赖的基础设施正在用 Rust 重写。当一个 CDN 节点、一个数据库、一个内核都在用 Rust 时,工程师自然会被动或主动地接触到它。

这就是它进前十的真正原因。


发表于 2026-07-19 · 系统编程 · #Rust #TIOBE #系统编程 #编程语言