Rust语言为什么这么卷?

大家好,我是风筝
最近 jetbrains 推出了一款针对于 rust 的 ide - rustrover。要知道,jetbrains 家是不养闲人的,不是大火的语言都不会专门开发一个 ide 出来,顶多以一个插件的形式出现,让你安装在 idea 或 pycharm 这些已有的 ide 中凑合用。
rustrover 的出现也意味着 rust 已经是一门大火的语言,其实连续很多年 rust 都是年度语言排行榜的新贵了。
这不,前两天前端 vueconf 会议上正式提出了 vite 底层的esbuild 和 rollup 将被取代,取代它们的正是用 rust 重写的。
要被取代的原因是因为性能问题,vite 是 vue3 的默认构建工具,用于 vue3 项目的开发和构建,类似于 webpack。
vue 团队认为性能不够快,还有一个原因可能是因为有一个竞品叫做 turbopack,turbopack 的性能比 vite 快了好几倍,而turbopack 就是用 rust 写的。
rust 是谁
rust 是一门系统级的编程语言, 由 mozilla 开发,现在由 rust 社区维护。最早是 mozilla 的一个工程师业余时间设计的一套语言,没想到无心插柳柳成荫,发布之后有越来越多的人关注并喜欢它。
据说,rust 最开始的设计目标就是 better c++,更好的 c++。可以看到设计者是将它对标 c++的。
学过 c++的都知道,c++中最为困扰的部分就是内存管理,程序员要自己管理内存的分配和回收,一大堆指针搞的你晕头转向,安全隐患太多。
所以,rust 最厉害的特性之一就是强大内存安全性。它通过引入所有权(ownership)、借用(borrowing)和生命周期(lifetimes)等概念,确保程序不会出现内存泄漏、空指针引用和数据竞态等问题。这使得 rust 代码在编译时就能够捕获潜在的内存错误,而无需运行时开销。
这也是初学 rust 的同学觉得它门槛高的原因。我们在写 java、python 的时候,就算有bug,但是没有明显的语法错误,编译都是能过的。别管怎么说,项目还是能跑起来的,项目一跑起来,成就感多少还是有一点的。
而 rust 不一样啊,你代码要是有潜在的内存 bug,是不可能编译过的,一编译就提示错误,一编译就提示错误。你可能写了大半天儿了,项目还没启动成功,你说气人不。这也导致很多人还没入门就放弃了。
就拿下面这段代码来说,虽然我们可能压根还不知道 rust 的语法,但是一眼看过去也能理解,很简单的逻辑对吧,如果换成 java 代码,跑的痛苦的很。
fn main() {    let s1 = string::from(hello);    let s2 = s1;    println!({}, world!, s1);} 但是,它就是编译不过。当你编译的时候会提示你:
 let s1 = string::from(hello);  |         -- move occurs because `s1` has type `string`, which does not implement the `copy` trait3 |     let s2 = s1;  |              -- value moved here4 |     println!({}, world!, s1);  |                            ^^ value borrowed here after move 这是rust中的所有权的概念,当 let s1 这行代码执行后,后面就不再有 s1 的所有权了。
要改成下面这样,不能直接使用s1,但可以用 s1 的副本。
fn main() {    let s1 = string::from(hello);    let s2 = s1.clone();    println!({}, world!, s1);} 当你开始学习 rust 的时候,会颠覆你对编程语言的认知,可能稍有一些夸张,但是写 rust 和 写其他语言体验完全不一样。
除了强大内存安全性这个特点外,rust 还有一些非常明显的特点。
并发支持
讨论一门开发语言的时候,不可避免的一定要涉及到并发。
一方面就是我们开发的时候,实现并发逻辑会不会太复杂,因为并发属于编程中的高级用法和难点,拿 java 来说,很多人写了好几年 java,也不一定能写好并发逻辑。一来是因为并发本身就比较抽象,二来是 java 中关于并发、多线程的部分确实有点开发不友好了,已经被诟病多年了。
而 rust 中的并发部分对开发人员来说就比较友好了,那就意味着使用简单,类似于 go 语言的并发,用起来简单,用的人自然就多了。当然除了简单之外,本身的并发性能也非常好。
高性能
rust 本身对标的就是 c和c++,c和c++的代名词就是性能好啊。语言越是接近操作系统,性能就越好,当然相对来说开发难度也就更大了。
性能好很大程度上是因为其良好的设计。
内存安全性:rust 引入了严格的内存安全性机制,包括所有权、借用和生命周期等,以防止空指针引用、数据竞争和内存泄漏等问题。这些机制在编译时检查,可以在运行时几乎没有额外开销。
并发编程模型:rust 提供了轻量级的线程和异步编程的支持,使得开发人员可以编写高效的并发代码。rust 的并发模型要求显式同步,以避免竞争条件,但这也使得并发代码更加可控且安全。
无运行时开销:rust 设计时考虑到了避免运行时开销,使得生成的机器码非常紧凑且高效。rust 不依赖于虚拟机,没有垃圾回收,也没有不必要的运行时开销。
高级优化:rust 编译器拥有强大的优化功能,能够生成高度优化的机器码。这些优化可以针对特定目标架构进行定制,以获得最佳性能。
rust 语言本身是用 c 和 c++写的,加上前面的那些优化,性能自然是好的。
跨平台
rust 编译器将 rust 代码编译成中间表示语言,这个中间表示语言是与具体硬件和操作系统无关的。这种中间表示语言允许 rust 在不同的目标平台上运行。
还有一个特点,那就是 rust 更新非常快,目前 rust 已经到了 1.73 的版本。所以有人说,不要学 rust,因为 rust 更新太快了。
适用场景
对安全性和性能有要求的
rust 翻译成中文是锈,所以如果什么工具改成用 rust 改写了,称作锈化。看到有人调侃的锈化定律。
锈化第一定律:一切能锈化的工具都终将锈化锈化第二定律:若工具锈化则本身不需要锈化锈化第三定律:都希望别人锈化而自己不锈化
文章开头说到 vite 要用 rust 开发的工具替换 esbuild 和 rollup ,就是因为性能问题。
微软都在用 rust 重写一部分 windows 组件,除了看重 rust 性能外,还有安全方面的因素。
嵌入式
rust 运行时的开销极小,性能好,加上它支持交叉编译,方便移植,成为越来越多嵌入式开发的首选语言。
区块链
区块链的核心就是安全问题,没有安全保障,一切都是虚无。rust 本身对程序安全的控制可以避免绝大多数的内存安全问题,从而减少很多安全漏洞。
从哪儿学 rust
官网
https://www.rust-lang.org/zh-cn/learn,rust 的官网本身就有很详细的教程和学习资料,内容非常丰富。
google
https://google.github.io/comprehensive-rust/zh-cn/index.html 这是 google android 团队写的 rust 教程,这个教程的目标是3天学完 rust,规划好了学习路线,每一天的上午、下午学习哪些部分,跟着学就好了。
还有一个,这里 https://this-week-in-rust.org/ 可以看到 rust 每周的最新变更情况,包括语言本身的变化和更新,以及一些重大新闻等等,看过去发现,rust 确实更新快啊。
最后
在招聘网站上搜了一下,rust 的职位已经有很多了,很多大厂小厂都有 rust 岗位。
不是说一定学 rust 就是为了找工作,但是越来越多的工具和产品选择用 rust,足以说明 rust 是一门优秀的语言。
而且是和其他语言的开发体验确实不太一样,最终用不用它不要紧,体验一下也会有收获的。


VR设备与水结合起来,用于将水上乐园,给游客无限的刺激感体验
NAS设备及硬盘的选购与安装使用
科瑞技术净利增26倍,聚焦新能源电池行业龙头企业
无人机带来农业革命 植保无人机市场前景十分广阔
食品亚硝酸盐快速测定仪介绍
Rust语言为什么这么卷?
三防漆如何在电动汽车以及其他汽车应用中发挥作用
使用LeonardoSpectrum综合Xilinx&nbs
全桥逆变电路的开关管实现
从DS2761升级到DS2762
震撼上市 华为新款MateBook X Pro皓月银惊艳全网
2019年3月我国共向欧盟出口LED照明产品1.99亿美元
电力行业的“晴雨表”
纯蒸汽质量检测仪,蒸汽品质测试系统
化合物半导体光电及功率器件的仿真设计、数理模型与制备
三部委:小于65nm逻辑电路等可免征进口关税
基于Arduino开发板和电磁阀的自动饮水机制作
中芯国际的14nm产线在国际上能否一战
微软:Win10 PC用户中80%已升级到一周年创意者更新版
赛睿发布两款新游戏耳机 响应频率可达40000Hz