Rust 由 Mozilla 发起、现由独立基金会推动,承诺三件事同时成立: 内存安全、无线程数据竞争、接近 C/C++ 的性能——且默认不依赖垃圾回收。
核心思想:所有权
Rust 用编译期规则管理内存:每个值有唯一所有者;所有者离开作用域时自动释放; 借用(引用)受严格约束,避免悬垂指针与重复释放。代价是初学时编译器更「唠叨」, 换来的是运行时更少惊喜。
fn main() {
let s = String::from("万象境");
take_ownership(s);
// 此处不能再使用 s,所有权已转移
}
fn take_ownership(text: String) {
println!("{}", text);
} // text 在此被释放
借用与可变性
不想转移所有权时,可以借用。同一时刻要么多个不可变借用,要么一个可变借用:
fn main() {
let mut name = String::from("万象境");
let len = calc_len(&name); // 不可变借用
append_suffix(&mut name); // 可变借用
println!("{} ({})", name, len);
}
fn calc_len(s: &String) -> usize {
s.len()
}
fn append_suffix(s: &mut String) {
s.push_str(" · Rust");
}
适合什么场景
- 系统编程、嵌入式、驱动与高性能网络服务
- 对延迟与内存占用敏感的后端组件
- WebAssembly、CLI、以及「安全替换 C/C++」的迁移路径
Rust 的学习曲线比许多主流语言更陡,但一旦跨过所有权与生命周期的门槛, 你会获得一套把许多整类 bug 挡在编译期之外的工具。
从哪里开始
推荐官方书籍
The Rust Programming Language
(中文常称「Rust 圣经」),配合 rustup 安装工具链后,用 cargo new 创建第一个项目。
编译器的报错信息本身就是很好的老师——读懂它,就读懂了大半 Rust。