Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

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项目