编程界 语言神 : 赶紧起来学 Rust 了!

作者:Pomelo_刘金日期:2025/12/10

大家对 Rust 的印象

没接触过的:

编程界语言神

整天重构这重构那

还要 要干掉 c++ ?!

稍微了解过的:

学习曲线:

但实际上是:

第一个高峰是 借用检查器,第二个是异步,第三个是unsafe,第四个是宏怎么玩?

开始接触之后

编译器不让我写代码,怎么写都报错

写 rust 代码像是在跟 rust 编译器谈对象 ,

我只是传个参数,你跟我讲所有权、借用、生命周期?”

写的代码上线之后,还不错哦

  • “别的语言项目上线流程”
  • 内容:
  • 编译 ✔
  • 测试(偶尔挂一两条)✔
  • 上线后:半夜被电话叫醒:❌
  • “Rust 项目上线流程”
  • 内容:
  • 编译 ❌ ❌ ❌ ❌ ❌ (三天后)
  • 编译 ✔
  • 测试 (偶尔挂一两条)✔
  • 上线:基本没人打电话 ✅

由此大家可能有点感受到我想下一步想说什么了

以及大家可能产生了一个疑惑

Rust 真的能减少 bug 么,吹牛吧

Rust 是否能减少 bug ?

Rust 最著名的承诺是内存安全(Memory Safety)和线程安全(Thread Safety) ,如果是真的,这直接消灭了两类最让大公司头疼的 Bug。

Google (Android 安全团队)

  • 文章链接:
  • 关键点
    • We adopted Rust for its security and are seeing a 1000x reduction in memory safety vulnerability density compared to Android’s C and C++ code. But the biggest surprise was Rust's impact on software delivery. With Rust changes having a 4x lower rollback rate and spending 25% less time in code review, the safer path is now also the faster one.
    • 我们采用 Rust 是因为它安全性高,与 Android 的 C 和 C++ 代码相比,内存安全漏洞密度降低了 1000 倍。但最大的惊喜是 Rust 对软件交付的影响。Rust 的变更回滚率降低了 4 倍,代码审查时间也减少了 25% ,更安全的路径现在也更快了。
  • 文章链接:
  • 关键句
    • To date, there have been zero memory safety vulnerabilities discovered in Android’s Rust code.
    • We don’t expect that number to stay zero forever, but given the volume of new Rust code across two Android releases, and the security-sensitive components where it’s being used, it’s a significant result. It demonstrates that Rust is fulfilling its intended purpose of preventing Android’s most common source of vulnerabilities. Historical vulnerability density is greater than 1/kLOC (1 vulnerability per thousand lines of code) in many of Android’s C/C++ components (e.g. media, Bluetooth, NFC, etc). Based on this historical vulnerability density, it’s likely that using Rust has already prevented hundreds of vulnerabilities from reaching production.
    • 迄今为止,Android 的 Rust 代码中尚未发现任何内存安全漏洞。
    • 我们并不指望这个数字永远为零,但考虑到两个 Android 版本中新增的 Rust 代码量,以及 Rust 被用于安全敏感组件,这确实是一个意义重大的结果。它表明 Rust 正在实现其预期目标,即防止 Android 最常见的漏洞来源。在 Android 的许多 C/C++ 组件(例如媒体、蓝牙、NFC 等)中,历史漏洞密度超过 1/kLOC(每千行代码一个漏洞)。基于这种历史漏洞密度,Rust 的使用很可能已经阻止了数百个漏洞进入生产环境。

Microsoft (MSRC)

这是微软承认 C/C++ 局限性的里程碑式文章,也是“70% 漏洞论”的出处。

  • 文章链接:-
  • 关键句:
    • roughly 70% of the security issues that the MSRC assigns a CVE to are memory safety issues. This means that if that software had been written in Rust, 70% of these security issues would most likely have been eliminated
    • 大约 70% 是内存安全问题。这意味着,如果这些软件是用 Rust 编写的,那么其中 70% 的安全问题很可能已被消除。

AWS

  • 文章链接:
  • 关键点
    • Rust uses a strict type system and ownership model to achieve compile-time verification of memory and concurrency safety, making the cost of testing and validating Rust implementations significantly lower than C/C++. Carl Lerche, a principal AWS engineer, says Rust and Tokio give AWS the ability to write services that respond fast, reliably, and that help us offer a better customer experience.
    • Rust 使用严格的类型系统和所有权模型,实现了内存和并发安全性的编译时验证,使得 Rust 实现的测试和验证成本远低于 C/C++。AWS 首席工程师 Carl Lerche 表示,Rust 和 Tokio 让 AWS 能够编写响应迅速、可靠且有助于提供更佳客户体验的服务。

为什么 bug 少?

Rust 的设计理念以及思路是

我不相信程序员能写出健壮的程序,你要想你的程序没有内存安全问题,按照我说的做。

结果呢,就是 将上线期才会暴露的 问题,提前到编译期就告诉你,这样写不行,会出问题。

那具体怎么实现的呢?

Rust 的 3 条“约法三章”:

  1. 所有权 / 借用(不讲名词,只讲规则)
  2. 空值 / Optional 的态度
  3. 并发 / 数据竞争的限制

约法一:谁负责资源,写死,不许糊弄

“Rust 的第一个原则: ‘每一块资源,必须有明确的唯一“负责人”。’

  • 谁创建它
  • 它能活多久
  • 谁可以动它

这些东西不是靠约定,而是编译器在帮你追踪。”

约法二:可能失败 / 可能为空,必须写在类型上

从 Go / JS 角度解释 Result / Option 的思想,而不是语法。

你可以这样讲:

“第二个原则: ‘可能失败、可能为 null 的地方,必须在类型上写清楚,不能偷偷摸摸。’

在 Go 里:

  • 很多函数签名是:(T, error)
  • 但我们可以选择忽略 error,甚至 _ = xxx

在 Rust 里,类似的东西会是:

  • Result:我可能成功也可能失败
  • Option:我可能有值也可能没值

区别在于: Rust 不太允许你装作‘它一定没问题’。 你不处理,这段代码就过不了编译。

“Rust:你可以菜,但你不能不认真。 Go / JS:你要是想糊弄一下,我也不拦你。”

让大家感受到: Rust 把“错误/空值”从“约定”变成了“制度”。

约法三:并发访问数据,先说清楚怎么用

“Rust 的并发哲学: ‘要么你保证这份数据只有一个人能改,要么大家都只能看不能改。’

编译器会在你启动线程的那一刻,就检查:

  • 你是不是把一个会被多处同时修改的东西到处乱传
  • 你是不是把一个短命的数据借给了活得比它久的线程

如果有这种可能性: ——直接不给你编译通过。

Rust 性能怎么样呢?

开发者根据 The Benchmarks Game 的测试数据制作了一份可视化图表,如下所示,灰色反映的是时间效率,越短代表性能越好,棕色则是基于执行时间和内存开销的加权值。 (计算机语言基准测试游戏(以前称为计算机语言大比拼)是一个自由软件项目,用于比较给定的简单算法子集如何在各种流行的编程语言中实现。)

Web 框架性能对比

可以看到最快的10个框架中 Rust 前十占七

AWS Lambda 冷启动时间(Serverless 场景)“冷启动”就是你的程序从“沉睡”到“完全唤醒并开始工作”所需的时间。

还有个特殊视角:能耗:

跑完同一个任务需要消耗多少焦耳的电 ,这对于云原生时代(电费即成本)非常重要。

论文:

为什么快?

没有“垃圾回收”(No Garbage Collection)—— 最关键的差异

  • Rust 没有垃圾回收器。它通过一套独特的**所有权(Ownership)**机制,在代码编译的时候,就已经精确计算出了每一个变量应该在什么时候被销毁。相比较于 带 GC 的语言的优势就是不会出现随机的“卡顿”(Latency Spikes)。

极其激进的编译器优化 (LLVM)

Rust 的编译器是出了名的“严格”和“慢”,但这是为了生成极致的机器码。

  • 静态分析:因为 Rust 的语法规则非常严格(比如强类型、不可变性),编译器能确信代码的某些部分永远不会改变,从而进行极其大胆的优化(比如直接删除冗余代码、内联函数调用),而动态语言(如 Python/JS)不敢这么做。

基于 Rust 的三大杀手锏——内存安全(不崩溃)极高性能(跑得快) GC (不卡顿) ,导致其适合的是那些“既要高可靠性,又要极限性能”的场景。

适用场景

例如 :

  • 基础设施与底层系统:Linux Kernel 6.1 正式接纳 Rust 为第二官方语言(历史上只有 C 语言);Windows 内核重写部分组件。
  • 高并发网络服务与网关(解决“长尾延迟”)这是 Rust 正在疯狂增长的领域,主要用来解决 Go 或 Java 在超高并发下遇到的 GC 瓶颈。
  • 嵌入式开发 (Embedded) & IoT 在资源受限的设备
  • 命令行工具 (CLI) 与开发者生态,这是普通开发者最容易感知到 Rust 威力的地方。Rust 正在重写几乎所有经典的 Linux 命令行工具。
  • WebAssembly (Wasm) 与边缘计算,Rust 是目前 WebAssembly 生态中支持最好的语言,没有之一。
  • 区块链 (Blockchain & Web3) Solana,Polkadot,Near Protocol,Aptos / Sui 等等
  • 交易系统与量化金融 (Trading Systems & HFT):Binance 的许多核心撮合引擎和高性能网关,都在逐渐迁移到 Rust。

可以看到,大部分都是 c++ 的使用场景

没错!,c++ 干的了的 我 Rust 干,c++ 干不了的 我 Rust 更要干,统统重构,Linus 特许,这就是 Rust

感觉有点厉害,那 Rust实际好不好用呢 ?

当然除了学习难度我们县抛开不谈,在日常开发上,Rust 工具链可谓简洁实用,借鉴了 go/jRuby/Node.js 前辈的优点

  • Cargo:公认为是当今编程界最完美的包管理器 数据来源:
    • 在 C/C++ 时代,构建一个跨平台项目简直是灾难。Rust 的 Cargo 不仅仅是一个包管理器,它是构建系统 + 包管理 + 测试运行器 + 文档生成器的四合一。
  • Rustfmt:代码格式化借鉴了gofmt。在团队开发中,最浪费时间的事情之一就是争论“花括号换不换行”或者“缩进用 2 个空格还是 4 个空格” Rust 官方直接提供 rustfmt。它有一套官方定义的“标准格式”。Code Review(代码审查)时,没有任何人会再评论格式问题,所有人的精力都集中在业务逻辑架构设计上。
  • Clippy:全自动的“高级导师”与“代码守门员”(重点)Clippy 是 Rust 的官方 Linter(静态分析工具),但它比普通的 Linter 强大得多。它不仅仅是检查错误,它是在教你写“地道”的 Rust 代码(Idiomatic Rust)。Clippy 的作用就是拉平这个差距:
    • 纠正“方言”,强制“普通话”: Clippy 内置了超过 700 条 规则。它会识别出那些“能跑,但是写得很丑/很慢/很危险”的代码,并给出修改建议。
    • 不仅指出问题,还自动修复: 很多时候,Clippy 可以直接通过 cargo clippy --fix 自动帮你把代码改成最优写法。

从仓库创建, 依赖拉取,格式统一,代码风格统一,代码检查,自动修复,代码测试,文档生成,crate 发布 Rust 工具链直接一条龙服务。

当然我其他语言用的比较少,这个可以问下会多种语言的 大佬们,实际体验是不是这样。

简单总结:

对大公司来说

  • 优点:
    • 更少的服务器:因为性能高(Cloudflare 案例)。
    • 更少的维护:因为 Bug 少(Google 案例)。
    • 更好的体验:因为无卡顿(Discord 案例)。
  • 缺点:因为学习门槛高,开发人员少。招不到人

对个人来说:

  • 优点:有第一梯队的 性能,有额外的安全检查,有好用的开发工具链
  • 缺点: 学习门槛高,需要反复入门

到这里,大家对公司来说 Rust 的优缺点应该没什么异议,

对个人来说的观点 可能大多数程序员不敢苟同

你说这个编程语言,这么厉害,有什么用啊,能让我早下班,能给我多发点工资么?

来看一个 2024-2025 年 不同编程语言薪资水平 数据

数据分析平台 DevJobsScanner 分析了来自世界各地超过 1000 万个开发职位,以帮助我们了解市场以及最热门、薪资最高的语言。在本研究中,仅关注来自美国的职位。这确保了结果更加一致和具有代表性,并显著降低了任何潜在的数据偏差

链接:

Solidity 是运行在 evm虚 拟机上的 智能合约语言

Clojure 是运行在 Java 虚拟机(JVM)上的现代 Lisp 方言。

还有人说了:那你也只是现在工资高,未来呢?我好不容易学会了,Rust 不火了那不白学了

未来发展

未来什么样,谁也说不了,但是我们可以来看这样一组数据:

2025 年 Stackoverflow 统计的最 Admired 的编程语言(指用了还想用,用户满意度高) ( 在过去一年里使用了该语言,并且在来年还想继续使用该语言的开发者比例)

至此 自 Rust 2015 年 5 月发布以来, 从2016-2025年 连续 10 年并持续霸榜成为用户满意度最高的语言。

达成了 出道 10 年,霸榜 10 年 的成就。

能否说明未来发展前景广阔

大家问那2015年呢?2015年是空降第三。

最终结论:

对个人来说

喜欢高性能,高 安全性 -> Rust!

提前布局未来,选有发展的 编程语言 -> Rust!

想要多赚钱 -> Rust!

所以,这样 狂拽炫酷吊炸天,程序猿用了都说好,并且薪资拉满的 Rust 真的不学一下么?

Pomelo_刘金。转载请注明原文链接。感谢!

不学错过未来,错过一个亿哦


编程界 语言神 : 赶紧起来学 Rust 了!》 是转载文章,点击查看原文


相关推荐


LangChain 深入
吴佳浩2025/12/1

LangChain 深入 这里需要装什么包什么依赖 我就不再一一赘述了 大家可以先看上一篇 《Langchain 浅出》 那么如果出现缺失的依赖怎么办 ?简单 缺什么装什么 目录 1、Python 依赖安装 2、词工程最佳实践 3、性能优化技巧 4、常见问题与解决方案 5、调试和错误处理 6、生产环境最佳实践 想了想还是给补一份基础的依赖吧 ,至于为什么,我也不知道 但是我还是补上了 另外 本章篇幅比较密的代码示例需要个人花点时间理解和消化有问题可以在评论区交流 Python 依


ZooKeeper+Kafka
吉良吉影1232025/12/18

目录 一、Zookeeper 1.1 Zookeeper 概述 1.2 Zookeeper 工作机制 1.3 ZooKeeper 特点 1.4 Zookeeper 数据结构 1.5 ZooKeeper 应用场景 1.6 Zookeeper 选举机制 1.6.1 第一次启动选举机制 1.6.2 非第一次启动选举机制 Leader 的作用 1. 处理所有写请求(核心职责) 2. 主导 Leader 选举 3. 管理集群数据同步 4. 维护集群状态 Follower


算法竞赛中的数据结构:图
喜欢吃燃面2025/12/27

目录 一.图的基本概念1.图的定义2.图、树、线性表的联系与区别2.1 核心联系2.2 核心区别 二.图的分类1.按边的方向分类2.按边的权重分类3 .按顶点和边的数量分类4 .按连通性分类(针对无向图)5 .按强连通性分类(针对有向图)6 .其他特殊类型7.顶点的度(补充)8.路径及相关长度概念(补充)8.1 路径8.2 路径长度(无权图)8.3 带权路径长度(带权图)8.4 核心区别对比 三.邻接矩阵1.邻接矩阵【注意】 四.邻接表五.链式前向星


Linux系统安全及应用(账号权限管理、登录控制、弱口令、端口扫描)
晚风吹人醒.2026/1/5

目录 1. 账号管理与权限控制         1.1 基本安全措施:                 1.1.1 账号管理和文件权限                 1.1.2 密码安全控制                 1.1.3历史命令和自动注销         1.2 用户切换与提权: 2. 系统引导与登录控制         2.1 开关机安全控制:                 2.1.1 GRUB                 2.1.2 限制更改GRUB


绘制K线第二章:背景网格绘制
佛系打工仔2026/1/13

绘制K线第二章:背景网格绘制 在第一章的基础上,我们简单修饰一下,补充一个背景九宫格的绘制功能。这个功能可以让K线图更加清晰易读,帮助用户快速定位价格和时间。 二、网格配置 确定网格的行数和列数 在绘制网格之前,我们需要确定: 几行:将高度分成几等份(对应价格轴) 几列:将宽度分成几等份(对应时间轴) 例如:4列5行,表示宽度分成4等份,高度分成5等份。 在Config中配置 为了灵活配置网格,我们在 KLineConfig 中添加了两个字段: data class KLineConfig(


Python 线程局部存储:threading.local() 完全指南
哈里谢顿2026/1/21

一句话总结: threading.local() 是 Python 标准库提供的「线程局部存储(Thread Local Storage, TLS)」方案,让同一段代码在不同线程里拥有各自独立的变量空间,从而避免加锁,也避免了层层传参的狼狈。 1. 为什么需要线程局部存储? 在多线程环境下,如果多个线程共享同一个全局变量,就必须: 加锁 → 代码变复杂、性能下降; 或者层层传参 → 代码臃肿、可维护性差。 有些场景只想让线程各自持有一份副本,互不干扰: Web 服务:每个请求线程绑定自

首页编辑器站点地图

本站内容在 CC BY-SA 4.0 协议下发布

Copyright © 2026 XYZ博客