1.0 简介
1.0. 简介
1.0.1. 题外话
这个项目(代码和笔记)都是我在自学Rust时所记录下的,或许会有记述不严密,表达不清晰之处,还请你谅解。如果你能从中受益,那再好不过。在这里推荐原视频 Rust编程语言入门教程(Rust语言/Rust权威指南配套)【已完结】
1.0.2. 为什么要使用Rust
-
Rust代码可靠且高效
-
Rust可以代替C和C++, Rust在具有相同性能的前提下比他们更安全,在编程中最明显的感受就是Rust不需要像前两者那样写几行就编译一下查看是否报错。具体如下: - 内存安全(空指针解引用、悬空指针和数据竞争) - 线程安全 (在运行程序之前就可以保证多线程代码是安全的) - 避免未定义行为 (数组越界、未初始化的变量和使用释放的内存)
-
Rust提供了现代语言特性(如泛型、trait、模式匹配等)
-
Rust 提供了更现代化的工具链:Rust 的 Cargo 和 Python 的库管理工具(如 pip)有着同一理念。用过C/C++都知道这两个语言的依赖项配置比较麻烦,而python的库管理工具十分自由且简单,Rust的Cargo保证了用户能在拥有C和C++的性能下有着使用python般的令人舒适的依赖项管理体验。
1.0.3 适用场景
-
需要运行速度:Rust 既可以像 C 一样精细控制内存(通过 unsafe),也可以提供现代高级语言的便利性(如所有权系统和模式匹配)。Python 是一种非常高级的语言,开发效率高,但牺牲了性能和控制。
-
需要内存安全:Rust 通过编译时的静态检查,提供了强大的内存安全保证,这使其在需要避免内存错误的场景(如操作系统、嵌入式开发、网络服务器等)中极为适用。
-
需要高效利用多处理器:Rust 为高效并发和多处理器编程提供了原生支持,而不牺牲安全性。这对于需要处理高吞吐量和并发任务的场景(如 Web 服务器、分布式系统、实时计算)尤其关键。
擅长的领域:
- Web Service
- WebAssembly (C#和Java的性能对比Rust和C/C++相形见绌)
- 命令行工具
- 网络编程
- 嵌入式设备
- 系统编程
1.0.4 与其他语言的对比
| 类别 | 语言 | 特点 |
|---|---|---|
| 机器语言 | 二进制指令 | 最接近硬件,由CPU直接执行 |
| 汇编语言 | Assembly | 使用助记符代替机器指令,如 MOV AX, BX。 |
| 低级语言 | C、C++ | 更贴近硬件,提供有限的抽象。 |
| 中级语言 | Rust、Go | 性能接近低级语言,但提供了更高的抽象。 |
| 高级语言 | Python、Java | 更高层次的抽象,易读易用。 |
高级语言与低级语言并不是绝对对立的,而是一个连续的光谱:
- 更低级的语言提供更多的硬件控制能力,但编写代码复杂,开发效率低。
- 更高级的语言提供更多的抽象和自动化功能,但可能会引入运行时开销,失去对硬件的精细控制。
Rust的优点:
- 性能好
- 安全性高
- 极好的并发支持
Rust作为一种中级语言相比于其他语言有这写优势:
- C / C++性能非常好,但是不够安全;Rust能够做到在维持基本相同性能前提下保证安全。
- Java / C#,能保证内存安全(有GC垃圾回收程序),也有很多特性,但是性能不行;Rust不但拥有与之相媲美的安全性,而且性能还更强。
1.0.5. Rust的历史
Rust最早是Mozilla公司下的一个研究性项目,火狐(FireFox)浏览器就是其应用的重要例子。
Mozilla公司使用Rust创建了Servo的实验性浏览器引擎(2012年启动,2016年发布首个预览版本),其所有内容都是并行执行的。不幸的是,在2020年8月,Mozilla裁撤了大部分Servo开发团队。但2020年11月17日起,Servo由Linux基金会接管。目前Servo的部分功能已经被集成到火狐里了。
FireFox的量子版就包含了Servo CSS渲染引擎。Rust使得FireFox获得了巨大的性能改进。
1.0.6. Rust的用户与案例
- Google: 操作系统Fuschia, Rust代码量占30%
- Amazon: 基于Linux开发的直接可以在裸机、虚拟机上运行容器的操作系统
- System76: 纯Rust开发了下一代安全操作系统Redox
- 斯坦福和密歇根大学: 嵌入式实时操作系统,应用于Google的加密产品
- 微软:使用Rust重写Windows系统中的一些低级组件
- 微软:WinRT/Rust项目