我要不要学 Rust
结语.1 先说结论
如果你是大一,微电子和AI方向,已经熟悉C和Python,想知道"我现在要不要学Rust",我的直接答案是:
现在不用专门学,但值得花两到三周时间了解它的核心思想。日后如果有需要,有C基础的你入门不会太难。
下面我来解释这个结论背后的逻辑。
结语.2 嵌入式场景:Rust对你意味着什么
结语.2.1 STM32有Rust支持吗
有,但成熟度有差距。
支持STM32的Rust生态主要是:
stm32f4xx-hal、stm32f1xx-hal等系列——由社区维护,覆盖了F1/F4/L4等常见系列stm32-rs项目——维护从芯片SVD文件自动生成的底层外设访问库(PAC)
可以用,但坑比用STM32CubeMX生成C代码多。原因:
- 工具链配置(调试器、OpenOCD/probe-rs的集成)需要额外折腾
- 文档和社区资源远不如C生态,遇到问题搜不到答案的概率高
- 某些外设的HAL实现不完整,需要直接操作寄存器(即写
unsafe代码)
我的建议:先用C学嵌入式,把基本功打好。等你对嵌入式架构有了感觉,再去探索Rust嵌入式生态。到那时候Rust嵌入式也会更成熟。
如果你对RP2040(树莓派Pico)感兴趣,这块板子的Rust支持是相对好的,rp-hal维护积极,文档比较完整,作为Rust嵌入式入门的平台比STM32更友好。
结语.2.2 RISC-V上的Rust
RISC-V是微电子方向不可回避的话题,Rust的RISC-V支持是真的好——因为RISC-V是设计相对干净的指令集,Rust的LLVM后端对它支持很好。不管是裸机还是有OS的RISC-V环境,Rust都是一个可行的选项。
如果你的课程或研究有RISC-V嵌入式的内容,Rust是值得考虑的工具,生态比STM32要活跃一些。
结语.3 AI基础设施:Rust在你的方向上扮演什么角色
结语.3.1 直接角色有限
作为AI方向的学生,你直接写Rust代码的概率不高。你的主战场是Python(训练脚本、实验管理、模型评估)和CUDA C(如果你做底层优化)。Rust不在这个主线上。
但Rust会以各种间接方式影响你的工作:
- 你用的tokenizers(HuggingFace的)核心是Rust的
- 你用的一些命令行工具(如果你在用rg、fd、bat)是Rust写的
- 你用的IDE插件背后可能有Rust(如果你用Zed)
- 未来你可能会用到的推理服务框架(如vllm等)的部分性能关键组件可能逐步迁移到Rust
结语.3.2 AI基础设施的底层趋势
一个值得关注的趋势:AI基础设施(不是AI算法本身,而是训练/推理/部署的工程框架)正在越来越多地用Rust重写性能关键路径。原因是一样的:大规模AI推理对延迟、吞吐量、内存效率的要求极高,Rust在这里有竞争力。
Candle(HuggingFace推出的纯Rust ML框架)、Burn(另一个Rust ML框架)、以及各种推理引擎的Rust实现正在出现。这些不是PyTorch的替代品,而是面向生产部署的轻量级推理工具,把模型从Python环境部署到不依赖Python运行时的场景。
这对你的直接影响:如果你日后进入AI基础设施团队(不是做AI研究,而是做AI工程/MLOps),Rust的知识会有价值。如果你专注于AI研究,Rust大概率不是你需要掌握的技能。
结语.4 学习成本评估:有C基础需要多久入门
结语.4.1 你的优势
有C基础的人学Rust,有几个明显优势:
理解内存布局。Rust的很多设计(栈vs堆、所有权的移动语义、裸指针的unsafe使用)都假设你理解内存是怎么工作的。C背景让你对这些有直觉,这是Python用户很难有的。
理解指针和引用。Rust的引用(&T和&mut T)在语义上类似C的指针,但有借用规则的约束。理解C指针的人能更快地理解借用检查器在保护什么。
命令行和工具链不陌生。你不会被Makefile、编译选项、链接器脚本这些东西吓到,对新的构建系统(cargo)的学习曲线更小。
结语.4.2 你的劣势
C的自由主义习惯。C允许你随便做内存操作,Rust不允许。从C切换到Rust,最开始会觉得"为什么这么多限制",需要主动改变思维模式,不是"绕过规则"而是"理解规则背后的逻辑"。
某些抽象是新的。枚举(Rust的enum比C丰富得多)、模式匹配、trait、泛型、迭代器适配器……这些概念如果你只接触过C和Python,有些会比较陌生。Python里的部分概念能帮助你(如迭代器、函数式风格),C里的部分不能直接迁移。
结语.4.3 时间估算
比较务实的估算,假设每天学1-2小时:
- 第1-2周:能读懂基本的Rust代码,理解变量、函数、控制流,对所有权有初步感知。这个阶段目标是"能看懂别人写的Rust"。
- 第3-6周:能写简单的Rust程序,能解决借用检查器的基本报错,理解Move/Borrow/Lifetime的基本用法。这个阶段目标是"能写出能编译的代码"。
- 第2-4个月:能写中等复杂度的程序,理解trait和泛型,能使用tokio做基本的异步编程,能选择和使用合适的crate。这个阶段目标是"能用Rust解决真实问题"。
- 半年以上:对生命周期有真正的理解,能写惯用的(idiomatic)Rust代码,能参与有一定规模的Rust项目。
如果你目标是"了解Rust是什么、能读懂代码、对它的设计有感觉",两到三周够了。如果目标是"能在项目里用Rust写功能",至少需要两到三个月的持续投入。
结语.4.4 最好的学习路径
第一步:读《Rust程序设计语言》(The Book)。这本书免费在线(doc.rust-lang.org/book),中文版也有(rust-lang.cn/book)。前半本(第1-11章)覆盖了核心概念,读完就有了基础。这本书质量极高,是语言入门书里的标杆。
第二步:做Rustlings。这是一套交互式练习,每道题是一个需要改好的小程序,通过修复编译错误来学习语法和概念。比单纯阅读有效得多。(github.com/rust-lang/rustlings)
第三步:写一个你感兴趣的小项目。不管是CLI工具、一个简单的HTTP服务,还是一个嵌入式的小实验。有具体目标的学习比泛泛而学效率高。
第四步(可选):读《Rust圣经》(Rust语言圣经)。这是一本面向中文读者的Rust学习材料,内容比官方Book更丰富,有大量工程实践的内容。(course.rs)
结语.5 最终结论:你和Rust的关系
让我用一个简单的框架来回答"要不要学":
如果你是以下情况,现在就可以开始:
- 你对系统编程有强烈兴趣,想从事操作系统、驱动、嵌入式相关工作
- 你在找一个C之后的"下一门系统语言"来深化内存管理的理解
- 你有空闲时间,学Rust对你来说是探索而不是任务
如果你是以下情况,暂时了解,日后深入:
- 你的当前学业主要是AI/ML算法研究,Python是主战场
- 你刚开始学嵌入式,C的基础还在建立中
- 你的时间有限,有更紧迫的技术要学
如果你是以下情况,可以先了解不深学:
- 你对Rust的好奇心主要来自Zed的速度体验,本质上是对"为什么它这么快"的好奇
- 你想在技术交流中不被这个话题卡住
- 你关心行业趋势,想知道这门语言重不重要
对于最后这种情况,你已经读完了这本书,这就够了。你现在知道Rust是什么、为什么存在、在哪里出没、被谁重视。当你日后在工作中遇到Rust的项目,你不会一脸茫然;当同学讨论Rust时,你能参与;当面试官问"你了解Rust吗",你有话说。
这就是这本书的全部目标:让你对Rust有真正的了解,而不是对概念的堆砌。
Rust值得你尊重,但不需要你仰视。它是一门有真实解决的真实问题的工程语言,而不是一个需要信仰的宗教。了解它,在你需要的时候用它,这就是对它最好的态度。
铁锈不是锈迹,是盔甲的材质。
全书完