Rust 正在吃掉基础设施层
如果你还在质疑 Rust 是不是”玩具语言”,那你可能需要刷新一下认知了。
2026 年初的 Rust 全球调查显示:近一半的公司(约 47%)已经在生产环境中使用 Rust。这个数字在三年前还只有 15% 左右。增长曲线简直离谱。
更让人震撼的是 Rust 的”渗透范围”:
- Linux 内核 — 从 Rust 6.1 开始,Linux 内核正式接纳 Rust 作为第二语言。到 2026 年,已经有超过 200 个内核模块用 Rust 重写
- 数据库 — ClickHouse 正在用 Rust 替换 C++ 组件,PostgreSQL 社区也在探索 Rust 扩展
- Web 框架 — Axum、Actix-Web、Leptos 正在挑战传统框架的地位
- CLI 工具 —
ripgrep、fd、bat、delta,几乎新一代 CLI 工具都是 Rust 写的 - AI/ML — Rust 的 ML 生态(Candle、Burn)正在为推理场景提供比 Python 更高效的替代方案
为什么公司们都在转向 Rust?
答案就两个字:安全 + 性能。
传统 C/C++ 项目中有 70% 的高危 CVE 与内存安全问题有关。Rust 的编译时检查直接把这些漏洞扼杀在摇篮里。对于金融、医疗、自动驾驶等”出 bug 会死人”的行业来说,Rust 不是”选择”,而是”必须”。
// Rust 的所有权系统在编译期防止内存错误// 这段代码在 C++ 中会导致 use-after-free// 但在 Rust 中根本编译不过
fn process_data() { let data = vec![1, 2, 3, 4, 5]; // data 持有所有权 let first = &data[0]; // 借用 data
// data.push(6); // ❌ 编译错误!不能同时有不可变借用和可变借用
println!("First: {}", first); // first 在这里使用 // data 在这里被释放(drop)} // first 的借用在 data drop 之前就结束了 ✅这种”编译器替你把关”的特性,让大型团队的代码 review 压力大幅减轻。有调查显示,采用 Rust 的团队,生产环境的内存相关 bug 减少了 90% 以上。
2026 年 Rust Web 开发生态
Rust 的 Web 框架生态在 2026 年已经非常成熟。Axum(基于 Tokio/tower 的 Web 框架)已经成为最热门的选择:
// axum 示例:一个完整的 CRUD APIuse axum::{ extract::{Path, State}, http::StatusCode, routing::{get, post, delete}, Json, Router,};use serde::{Deserialize, Serialize};use sqlx::PgPool;use tokio::net::TcpListener;
#[derive(Serialize, Deserialize, Clone)]struct User { id: i64, name: String, email: String, created_at: chrono::DateTime<chrono::Utc>,}
#[derive(Deserialize)]struct CreateUser { name: String, email: String,}
async fn list_users( State(pool): State<PgPool>,) -> Result<Json<Vec<User>>, StatusCode> { sqlx::query_as::<_, User>("SELECT * FROM users ORDER BY created_at DESC") .fetch_all(&pool) .await .map(Json) .map_err(|_| StatusCode::INTERNAL_SERVER_ERROR)}
async fn create_user( State(pool): State<PgPool>, Json(input): Json<CreateUser>,) -> Result<(StatusCode, Json<User>), StatusCode> { let user = sqlx::query_as::<_, User>( "INSERT INTO users (name, email) VALUES ($1, $2) RETURNING *" ) .bind(&input.name) .bind(&input.email) .fetch_one(&pool) .await .map_err(|_| StatusCode::CONFLICT)?;
Ok((StatusCode::CREATED, Json(user)))}
async fn delete_user( State(pool): State<PgPool>, Path(id): Path<i64>,) -> StatusCode { sqlx::query("DELETE FROM users WHERE id = $1") .bind(id) .execute(&pool) .await .map(|r| if r.rows_affected() > 0 { StatusCode::NO_CONTENT } else { StatusCode::NOT_FOUND }) .unwrap_or(StatusCode::INTERNAL_SERVER_ERROR)}
#[tokio::main]async fn main() { let pool = PgPool::connect("postgres://user:pass@localhost/rustdb") .await .expect("Failed to connect to database");
let app = Router::new() .route("/users", get(list_users).post(create_user)) .route("/users/{id}", delete(delete_user)) .with_state(pool);
let listener = TcpListener::bind("0.0.0.0:3000").await.unwrap(); println!("Server running on http://localhost:3000");
axum::serve(listener, app).await.unwrap();}这段代码的性能如何?在同等硬件上,Axum 的吞吐量大约是 Express.js(Node.js)的 8-10 倍,内存占用只有 1/5。对于高并发的 API 网关、实时数据服务来说,这个差距直接决定了服务器成本。
Rust 在嵌入式和 IoT 领域
Rust 的另一大爆发领域是嵌入式系统。2026 年,ESP32 等主流 MCU 已经官方支持 Rust 编译,esp-rs 生态日趋成熟:
// 用 Rust 写 ESP32 嵌入式程序#![no_std]#![no_main]
use esp_backtrace as _;use esp_hal::{ clock::ClockControl, gpio::{Io, Level, Output}, peripherals::Peripherals, prelude::*, Delay, system::SystemControl,};
#[entry]fn main() -> ! { let peripherals = Peripherals::take(); let system = SystemControl::new(peripherals.SYSTEM); let clocks = ClockControl::max(system.clock_control).freeze();
let io = Io::new(peripherals.GPIO, peripherals.IO_MUX); let mut led = Output::new(io.pins.gpio2, Level::Low); let mut delay = Delay::new(&clocks);
loop { led.set_high(); delay.delay_ms(500u32); led.set_low(); delay.delay_ms(500u32); }}用 C 写嵌入式固件,一个 null pointer dereference 就能让整个设备变砖。用 Rust?编译通过了你就基本不用担心运行时崩溃。对于汽车 ECU、医疗设备、工业控制器来说,这种保障弥足珍贵。
Rust + WASM:双剑合璧
Rust 和 WebAssembly 是天生一对。Rust 是编译到 Wasm 的最佳语言之一,生成的二进制体积小、执行效率高:
// wasm-pack 构建的 Rust→Wasm 模块use wasm_bindgen::prelude::*;
#[wasm_bindgen]pub struct AnalyticsEngine { data: Vec<f64>,}
#[wasm_bindgen]impl AnalyticsEngine { pub fn new() -> AnalyticsEngine { AnalyticsEngine { data: Vec::new() } }
pub fn add_data_point(&mut self, value: f64) { self.data.push(value); }
pub fn calculate_statistics(&self) -> JsValue { let n = self.data.len() as f64; if n == 0.0 { return JsValue::NULL; }
let sum: f64 = self.data.iter().sum(); let mean = sum / n;
let variance = self.data .iter() .map(|x| (x - mean).powi(2)) .sum::<f64>() / n;
let std_dev = variance.sqrt(); let min = self.data.iter().cloned().fold(f64::INFINITY, f64::min); let max = self.data.iter().cloned().fold(f64::NEG_INFINITY, f64::max);
serde_wasm_bindgen::to_value(&serde_json::json!({ "count": n as u64, "mean": mean, "std_dev": std_dev, "min": min, "max": max, "variance": variance, })).unwrap() }}在浏览器中运行这个 Wasm 模块进行百万级数据的统计计算,比纯 JavaScript 实现快了约 4-7 倍。而且由于 Wasm 的沙箱特性,用户不用担心恶意代码。
我的学习建议
如果你还没学 Rust,2026 年是一个非常好的时间点。生态已经成熟、文档齐全、社区活跃、职位需求快速增长。
推荐的学习路径:
- 官方《Rust 程序设计语言》(The Book) — 必读,免费
- Rustlings — 交互式练习题,巩固语法
- 练习项目 — 先写一个 CLI 工具(比如 JSON 格式化器),再写一个 Web API(用 Axum),最后尝试 TUI 应用(用 Ratatui)
- 深入 — 学习 unsafe Rust、FFI、异步编程
Rust 的学习曲线确实陡峭。所有权、生命周期、borrow checker 这些概念可能需要几周才能完全理解。但一旦跨过那个门槛,你会发现编译器是你最好的朋友——它替你检查了所有你之前要靠”小心谨慎”才能避免的错误。
Rust 在 AI/ML 领域的崛起
说到 AI/ML,你可能本能地想到 Python。确实,Python 在训练环节的主导地位短期内不会被动摇——PyTorch 和 TensorFlow 的生态实在太强大了。
但在推理环节,故事完全不同。
2026 年,越来越多的团队发现,用 Python 做推理服务存在一系列问题:冷启动慢、内存占用高、GIL 导致并发受限、部署时需要把所有依赖打包进去(那个几十 GB 的 PyTorch 镜像你懂的)。
Rust 的 ML 生态(Candle、Burn、ort)正在为这些问题提供替代方案:
// 使用 Candle 在 Rust 中进行模型推理use candle_core::{Device, Tensor};use candle_nn::VarBuilder;use candle_transformers::models::bert::{BertModel, Config};
fn main() -> Result<(), Box<dyn std::error::Error>> { // 加载量化后的 BERT 模型(只有 80MB,对比 PyTorch 版 440MB) let device = Device::Cuda(0); let vb = unsafe { VarBuilder::from_mmaped_safetensors( &["model/model.safetensors"], candle_core::DType::F16, // 半精度推理 &device, )? };
let config = Config::from_file("model/config.json")?; let model = BertModel::new(&config, vb)?;
// 推理 let input_ids = Tensor::new(&[[101, 2057, 2003, 2339, 102]], &device)?; let attention_mask = Tensor::new(&[[1, 1, 1, 1, 1]], &device)?;
let output = model.forward(&input_ids, &attention_mask, false)?; let embeddings = output.last_hidden_state?;
println!("Embedding shape: {:?}", embeddings.shape()); // Embedding shape: [1, 5, 768]
Ok(())}这个 Rust ML 推理容器只有 120MB(对比 PyTorch 容器的 2.5GB),冷启动时间 800ms(对比 8 秒),每秒推理请求数高 4-5 倍。
当然,Rust 在 ML 领域的角色目前是”给 Python 打辅助”——训练用 Python,推理用 Rust。但随着 Candle 和 Burn 等框架的发展,这个界限可能会越来越模糊。
Rust 的就业市场
说点实际的。2026 年的招聘市场对 Rust 开发者的需求比三年前增长了约 300%。岗位类型从系统编程扩展到 Web 开发、区块链、嵌入式、云基础设施、甚至游戏引擎。
薪资方面,Rust 开发者的平均薪资在北美约为 **170,000 和 Java 的 $155,000。在国内一线城市,资深 Rust 开发者的年薪在 60-100 万人民币区间——岗位少,但能找到的都是精品。
为什么 Rust 开发者这么贵?因为写的代码质量高。同样一个系统模块,C++ 开发者平均每千行代码产生 1.2 个安全漏洞,而 Rust 开发者因为编译器的严格检查,这个数字降到了 0.1 以下。对企业来说,更少的 bug 意味着更低的运维成本和更好的声誉——这笔账算下来,Rust 开发者的溢价是值得的。
学习 Rust 的常见误区
最后,作为一个 Rust 老兵,我想帮大家避几个坑:
误区一:先学 C/C++ 再学 Rust。 完全不需要。Rust 是独立设计的语言,不需要 C 的背景。我见过很多 JavaScript 转 Rust 的开发者学得比 C++ 开发者还快——因为他们没有”指针思维”需要重置。
误区二:必须把所有代码写成零 cost 抽象。 Rust 社区有一种”性能至上”的氛围,但这不意味着每个函数都要用泛型 + trait + 生命周期标注来写。简单、可读的代码往往比过度优化但不可读的代码更受团队欢迎。先把正确的代码写出来,再考虑优化。
误区三:所有项目都应该用 Rust。 不。Rust 的最佳适用场景是:对性能有高要求、对内存安全有强需求、或者需要长时间稳定运行的系统。写一个简单的 CRUD API、写一个脚本、写一个快速原型——用 Python 或 TypeScript 可能是更高效的选择。
误区四:生命周期太难了,普通人学不会。 老实说,生命周期是 Rust 学习曲线最陡的部分,但它没有你想象的那么复杂。99% 的场景你只需要记住一个原则:数据的所有者决定数据的生命周期。当一个引用指向的数据可能比你预期更早被释放时,编译器会报错——就这么简单。
总结
2026 年的 Rust 已经不是”未来的语言”,它已经是一个成熟的、在生产环境中被广泛验证的语言。Linux 内核用 Rust、数据库用 Rust、云基础设施用 Rust、AI 推理用 Rust、CLI 工具用 Rust。
如果你是一个想要提升自己职业竞争力的开发者,学 Rust 是一个很好的长期投资。不考虑短期内的”学了这个能不能立刻涨薪”,而是考虑三五年后你能用 Rust 做哪些别人做不了的事情。
还是那句话:Rust 让你写系统编程不再像走钢丝。那条有护栏的高速公路,值得上去开一开。
Rust 在现实项目中的应用案例
说两个我身边团队使用 Rust 的真实案例,帮大家感受一下”用 Rust 做项目”是什么体验。
案例一:API 网关重写。我朋友所在的团队用 Rust 重写了一个基于 Node.js 的 API 网关。原来的 Node.js 实现在高峰期需要 16 个 Pod 支撑每秒 5000 的请求量,每个 Pod 占用 512MB 内存。Rust 重写后(用了 Axum + Tokio),同样 5000 QPS 只需要 2 个 Pod,每个 Pod 占用 64MB 内存。而且延迟从平均 45ms 降到了 8ms。成本从每月约 400。
当然,重写不是免费的——Rust 版本的开发花了 6 周,Node.js 版本当初只花了 2 周。但在一个长期运行的系统中,这 4 周的额外开发时间换来的持续成本节省,大概 2 个月就回本了。
案例二:嵌入式设备固件。另一个团队在开发工业 IoT 设备,原来的 C 固件每季度都会出现 2-3 次内存相关的崩溃。用 Rust 重写固件后(用了 esp-rs),同样的硬件上跑了 8 个月零崩溃。对于部署在偏远地区的工业设备来说,少一次崩溃可能就省下了数万元的现场维护费用。
如何找到 Rust 相关的实践项目?
很多读者读完文章后表示”想学 Rust,但不知道可以用它做什么”。这里我推荐几个入门级项目,每个都能让你在实践中巩固 Rust 的核心概念:
项目一:CLI 工具。写一个 JSON 格式化/验证工具。这个项目会帮你熟悉:crate 管理(serde_json、clap)、错误处理(Result/Option)、模式匹配。预期工作量:2-3 天。
项目二:HTTP 服务器。用 Axum 写一个简单的 REST API,带 CRUD 操作和数据库连接(SQLx + PostgreSQL)。这个项目会帮你熟悉:异步编程(async/await)、trait 和泛型、类型安全的 SQL。预期工作量:1-2 周。
项目三:并发爬虫。写一个网站爬虫,从多个 URL 并发抓取内容并汇总结果。这个项目会帮你熟悉:Tokio 运行时、Arc/Mutex、channel 通信。预期工作量:3-5 天。
项目四:TUI 应用。用 Ratatui 写一个终端界面应用,比如文件浏览器或系统监控面板。这个项目会帮你熟悉:Rust 的所有权和借用在实际 GUI 编程中的应用、事件循环、流的处理。预期工作量:1-2 周。
完成这四个项目后,你对 Rust 的掌握程度应该可以胜任中等复杂度的生产项目了。
关于 Rust 社区
最后聊聊 Rust 社区。2026 年的 Rust 社区是我见过最友善、最乐于助人的编程社区之一。
Rust 官方运营的 “Rust 程序设计语言”(The Book)在 2026 年已经有了完整的中文翻译,而且翻译质量非常高。Rust By Example 也提供了带中文注释的互动式教程。
中文社区方面,Rust 中文论坛、Rust 语言中文网、以及各大城市(北京、上海、深圳、杭州)的 Rust meetup 活动都非常活跃。相比五年前”遇到问题不知道该问谁”的状况,现在 Rust 学习者的境遇已经好太多了。
如果你在学习 Rust 的过程中遇到问题,推荐去 Rust 中文论坛(rustcc.cn)提问,通常几小时内就会有人回复。也可以加入 Rust 中文 Telegram 群组,那里有近万名 Rust 开发者在线交流。
Rust 的学习曲线是陡峭的,但你不是一个人在爬。这个社区里每一个人都走过你正在走的路,他们很乐意拉你一把。
给不同背景读者的 Rust 学习建议
最后根据我观察到的不同类型 Rust 学习者的经历,给一些针对性的建议。
如果你是从 C/C++ 转 Rust:你最大的优势是理解”内存管理”的概念,但最大的挑战是”放下习惯”。Rust 的所有权系统和 C++ 的智能指针看似相似但本质不同。尤其是在处理链表、图这类自引用数据结构时,Rust 需要完全不同的设计思路。建议你先忘记 C++ 的那一套,按照 The Book 的节奏一步步来,不要跳过任何章节。
如果你是从 JavaScript/TypeScript 转 Rust:你最大的优势是没有”指针思维”的包袱,而且对异步编程有直观理解。最大的挑战是类型系统的严谨性和编译器的”严格”——在 TypeScript 中 “any” 一下就能过去的问题,在 Rust 中必须找到正确的类型表达。建议你先从 CLI 工具入手,先把所有权和借用的概念吃透,再进入异步编程。
如果你是从 Python 转 Rust:你需要做好心理准备——从”写代码快但跑得慢”到”写代码慢但跑得快”的转变是巨大的。Python 的灵活性和动态特性在 Rust 中几乎不存在。你的强项是对业务逻辑的理解,建议你从重写一个自己熟悉的 Python 工具开始,这样可以把注意力集中在 Rust 语法上,而不是被业务逻辑分心。
不管你是从什么背景过来的,记住一条核心原则:Rust 编译器不是为了刁难你,而是为了保护你。每一个编译错误都是编译器在告诉你”这里可能会出 bug”。当你接受了这个理念,Rust 的学习曲线就会从”痛苦”变成”安心”。