Rust[1] 由 Mozilla 研究院的 Graydon Hoare 于 2006 年发起,旨在解决 C++ 中的内存安全问题和并发安全问题。

Mozilla 于 2009 年正式赞助该项目,目标是创建一门既
• 能替代 C/C++ 进行系统编程, • 又能保证内存安全和并发安全的语言。
序
我原来想找个新的编程语言来学习,咨询我计算机的同学,他建议我学习RUST,最后,知道了我自己的计算需求,选择了Julia我这里做了Julia的详细介绍,Julia, 科学计算与高性能编程语言,今天来详细介绍以下Rust,这个被Linux内核允许使用的“牛”的编程语言,大概是和Julia在同一时间起步的哟.
Rust 是一门现代系统级编程语言,以其内存安全、零成本抽象和并发无畏(fearless concurrency)而闻名。

自 2010 年开源以来,它迅速成长为最受开发者喜爱的语言之一(Stack Overflow 开发者调查连续多年排名第一)。
2009 年,Mozilla 意识到 Firefox 浏览器(特别是其渲染引擎 Gecko)面临着严重的 C++ 内存安全漏洞和并发编程困难,于是开始赞助 Rust 项目。


Rust 的核心设计理念可以概括为:在不牺牲性能的前提下,提供内存安全和并发安全。

通过编译时静态检查(而非运行时 GC)防止悬垂指针、数据竞争等。
malloc/free) | ||||
高层抽象(如迭代器、泛型)在编译后生成与手写 C 代码同等高效的机器码。
如果代码能编译通过,通常意味着它是线程安全的。
Rust 没有运行时(Runtime)开销,生成的二进制代码效率可与 C/C++ 媲美。
Cargo(包管理和构建工具)它是目前主流语言中体验最好的工具之一,集成了依赖管理、构建、测试、文档生成等功能。
C语言:内存管理完全手动,开发者需要自己负责分配和释放内存。这种机制提供了最大的灵活性,但也带来了最高的安全风险,如野指针、内存泄漏和缓冲区溢出等。
C语言没有编译时或运行时的安全检查,所有内存错误都只能在运行时被发现,且难以调试。
C++语言:在C的基础上增加了智能指针(如shared_ptr和unique_ptr)等自动内存管理机制。这些机制减少了手动管理内存的负担,但仍存在运行时开销(如引用计数)。
C++的模板机制提供了强大的抽象能力,但编译错误信息往往难以理解,增加了开发复杂度。
Go语言:采用垃圾回收机制管理内存,大大降低了内存管理的复杂度。Go的GC在低延迟场景中(如网络驱动)存在显著开销,即使在内存充足的情况下,GC的持续工作仍会导致CPU利用率增加。
在内存受限场景下(如5 GiB),Go因GC无法满足低延迟要求,性能会显著下降。
Rust语言:通过所有权系统和借用检查器在编译期确保内存安全,无需运行时GC。这种设计既保证了内存安全,又避免了GC带来的性能问题。

Rust的借用检查器通过数据流分析和非线性生命周期(NLL)算法,精确追踪引用的有效范围和冲突,确保程序在运行时不会出现内存安全问题。
| 内存安全 | ||||
| 性能 | ||||
| 并发模型 | ||||
| 抽象能力 | ||||
| 学习曲线 | ||||
| 构建工具 | ||||
| 典型用途 |
关键差异:
Rust 的宏和泛型比 C++ 模板更易读且错误信息更友好。
Rust 追求运行效率和控制力,适合构建对延迟敏感、资源受限或需要极致性能的系统。
Rust 最难学但也最精华的部分,也是Rust自己独一无二的特性,它是其优势的“内核”.

核心规则:
Rust 中的每一个值都有一个被称为其 所有者 (Owner) 的变量。
值在任一时刻有且只有一个所有者。
Copy trait)。当所有者(变量)离开作用域,这个值将被丢弃(Drop),内存被释放。
在 C++ 或 Go 中,赋值通常是浅拷贝或深拷贝。但在 Rust 中,对于非基本类型(如 String),赋值是移动所有权。
let s1 = String::from("hello");let s2 = s1; // s1 的所有权 move 给 s2,s1 不再有效// println!("{}", s1); // 编译错误!防止双重释放(double free)、悬垂指针(dangling pointer)。
如果每次使用变量都要转移所有权太麻烦,Rust 提供了引用 (Reference),即借用 (Borrowing)。

允许临时借用(borrow)而不转移所有权:
&T):可多个同时存在。你可以创建任意多个不可变引用(只读)。
&mut T):同一时间只能有一个,且不能与不可变借用共存。在同一作用域内,只能创建一个可变引用(读写)。
这就像“读写锁”机制,但它是在编译阶段强制执行的,运行时没有开销。这彻底根除了数据竞争。
let mut s = String::from("hello");let r1 = &s;let r2 = &s;println!("{} and {}", r1, r2); // OKlet r3 = &mut s; // error! 不能在不可变借用存在时创建可变借用在编译期消除数据竞争(data race)。
当引用在代码中传递时,编译器需要确保引用指向的数据在引用使用期间是有效的。
'a。解决引用有效性范围问题,防止悬垂引用:
fn longest<'a>(x: &'a str, y: &'a str) -> &'a str { if x.len() > y.len() { x } else { y }}'a 表示返回值的生命周期至少与输入参数中最短的那个一样长。本质:编译器验证“引用不会比其所指向的数据活得更久”。
Rust 的高级特性(如迭代器、闭包、Future、泛型)在编译后会生成与手写底层代码一样高效的汇编指令。
你不需要为了性能而牺牲代码的可读性。使用
map、filter等高阶函数的性能通常优于手写的for循环,因为编译器能对迭代器进行极度的优化(如自动向量化 SIMD)。
高层代码编译后与手写底层代码性能一致:
// 高层抽象:迭代器链let sum: i32 = (0..100) .filter(|x| x % 2 == 0) .map(|x| x * x) .sum();// 编译后 ≈ 手写 for 循环,无额外函数调用开销dyn Trait)有少量开销。
Rust 的 match 表达式非常强大,配合 enum(枚举)使用是 Rust 的标志性写法。
Option 类型的 Some 和 None),避免了遗漏处理导致的 Bug。强大的 match 表达式,覆盖所有可能情况(穷尽性检查):
enum Message { Quit, Move { x: i32, y: i32 }, Write(String),}fn handle(msg: Message) { match msg { Message::Quit => println!("Quit"), Message::Move { x, y } => println!("Move to ({}, {})", x, y), Message::Write(text) => println!("Write: {}", text), // 若遗漏分支,编译报错! }}if 条件)、绑定等。Option<T>、Result<T, E> 结合,强制处理错误路径。尽管 Rust 在 AI/ML 领域起步晚于 Python,但近年发展迅猛,强调安全、性能与可部署性。

| Polars | ||
| Arrow2 | ||
| Datafusion | ||
| plotters | ||
| egui |
⚠️ 注意:Rust 目前缺乏 Matplotlib/Seaborn 级别的成熟可视化生态,常与 Python 互操作(通过 PyO3)。
Rust 的 ML 生态正处于快速上升期,主要用于推理部署和高性能算子实现。
| tch-rs | ||
| candle | ||
| linfa | ||
| smartcore |
旨在成为 Rust 版本的 Scikit-learn,提供经典的机器学习算法(K-means, SVM, PCA 等)。
一个新的、纯 Rust 编写的深度学习框架。它支持动态图,拥有极高的灵活性,并且可以通过 WGPU 在任何 GPU 上运行。
.pt 模型。Libtorch (PyTorch C++ API) 的 Rust 绑定。如果你需要 PyTorch 的全部功能但想用 Rust 写逻辑,这是首选。
由 Hugging Face 推出的极简主义 ML 框架。专注于无服务器推理(Serverless Inference)和轻量级部署,去除了 PyTorch 庞大的二进制体积。
现状:Rust 尚无 TensorFlow/PyTorch 级别的一站式框架,但在推理部署、嵌入式 AI、安全关键系统中优势明显。
| rayon | ||
| crossbeam | ||
| tokio | ||
| std::thread |
par_iter() 一行代码并行化迭代器。数据并行库。只需将 .iter() 改为 .par_iter(),就能自动将任务分发到所有 CPU 核心上,且保证没有数据竞争。这是 Rust "无畏并发" 的最佳体现。
| wgpu | ||
| rust-gpu | ||
| cuda | ||
| opencl |
cuda-sys / cudarc:底层 CUDA 驱动绑定。custos:高层 CUDA 编程框架。hip-rs 提供 HIP 支持。metal-rs 提供原生 Metal API。挑战:GPU 生态仍不如 CUDA C++ 成熟,但安全性优势显著(避免 GPU 内存越界)。
适合 Rust 的场景:
Rust 通过创新的所有权模型,在不牺牲性能的前提下解决了系统编程中长期存在的内存安全与并发难题。虽然学习曲线陡峭,但其带来的可靠性、性能和开发者信心使其在关键基础设施领域迅速普及。
在科学计算领域,Rust 生态虽不及 Python 成熟,但在高性能推理、嵌入式 AI、安全敏感场景中展现出独特价值。随着 Burn、candle、Polars 等项目的成熟,Rust 有望成为 AI 工程化部署的重要语言。
Rust 正从“系统语言”向“通用语言”演进,在 Web(Wasm)、GUI(Iced、Slint)、AI、HPC 等领域持续拓展边界。
Rust 是一门高门槛、高回报的语言。它强迫开发者在编码阶段就思考内存布局和所有权关系,虽然起步艰难(与编译器“搏斗”),但一旦编译通过,代码通常就能稳定、高效地运行。对于追求极致性能、系统稳定性和长期维护性的项目,Rust 是目前最优的选择之一。
Rust 代表了系统编程语言的革命性进步,通过独特的所有权系统和借用检查器,在保持零成本抽象的同时实现了内存安全和并发安全。
虽然学习曲线陡峭,但其带来的安全性保证和性能优势使其在系统编程、基础设施、嵌入式等领域具有不可替代的价值。
随着生态系统的不断完善和企业采纳度的提高,Rust 正逐渐成为高性能、高可靠性软件的首选语言之一。


公众号《博優旮旯-BOYOGALA》[2],致力于让大家更专业、更完整和更系统地获取与了解数学(运筹与优化、数值分析)等相关数学知识分享!
🎯公众号ID:boyogala,🌐网址: www.boyogala.us.kg[3],💬微信: boyougala,📧邮箱: boyogala@qq.com[4].
说明文档:公众号《博優旮旯-boyogala》的使用指南,以下罗列代表作可供查阅.
优化求解器 — 代表作:优化求解器类型总结线性二次和非线性求解器,Ipopt开源免费的非线性求解器,HiGHS开源免费整数线性求解器,SCIP开源免费的优化求解器,Gurobi商业收费全局优化求解器,CPLEX商业收费整数优化求解器,MOSEK商业收费的优化求解器,BARON商业收费的全局优化求解器,LindoAPI商业收费的全局优化求解器,COPT国产自研的优化求解器
三大数学软件 — 代表作:MATLAB工程师的科学计算软件,MATHEMATICA物理的计算软件,MAPLE数学家的数学软件
嵌入式、无人机和机器人 — 代表作:OSQP二次规划求解器
线性方程组的求解软件 — 代表作:PARDISO并行直接求解器,MUMPS高性能并行求解器,SuitSparse稀疏矩阵软件包,SuperLU非对称直接法求解器
基于MATLAB的优化建模工具 — 代表作:CVX免费凸优化建模工具,Yalmip免费的优化建模工具,CasADi开源最优化控制工具
基于Python的优化建模工具 — 代表作:CasADi非线性优化和最优控制,Gekko数值优化和动态系统建模,Pyomo面向对象代数建模语言
科学计算软件 — 代表作:oneAPI统一的异构编程模型,CUDA人工智能时代的基石,OpenFOAM开源的CFD软件,COMSOL业界多物理场仿真软件
全球优化建模平台 — 代表作:AMPL数学规划建模语言,AIMMS快速优化建模工具,GAMS通用代数建模系统,JuMP数学优化建模语言(学习中…)
人类在思考 — 代表作:公众号排版数学公式的经验,200篇论文🆚1个优化求解器,盗版Windows系统🆚破解版LINGO18
数学是第三世界 — 代表作:数学研究需要师徒传承吗?函数梯度的可视化
[1] Rust: https://rust-lang.org/[2] 《博優旮旯-BOYOGALA》: https://www.cardopt.cn/api/images/1_1763724698_ce344a.png[3] www.boyogala.us.kg: http://www.boyogala.us.kg[4] boyogala@qq.com: mailto:boyogala@qq.com