Rust 是一门系统级编程语言,由 Graydon Hoare 于 2006 年开始设计,Mozilla 于 2015 年正式发布 1.0 版本。Rust 的目标是成为 安全、并发、实用的系统编程语言,在保持 C++ 级别性能的同时,彻底消除内存安全问题。
Rust 的核心定位是 "内存安全 + 无垃圾回收 + 零成本抽象"。它通过所有权(Ownership)、借用(Borrowing)和生命周期(Lifetimes)三大机制,在编译期保证内存安全,无需运行时开销。
2006 年,Graydon Hoare 在 Mozilla 开始了 Rust 的个人项目。Mozilla 当时正在开发 Servo 浏览器引擎,需要一个更安全的语言来替代 C++。2010 年,Mozilla 正式赞助 Rust 项目。经过 5 年的迭代,Rust 1.0 于 2015 年 5 月 15 日正式发布。
fn main()let x = 10;(默认不可变)let mut x = 10;const MAX: u32 = 100_000;// 单行、/* */ 多行、/// 文档注释println!()、vec![]、panic!()i8、i16、i32、i64、i128、isize(有符号)u8、u16、u32、u64、u128、usizef32、f64boolchar(4 字节,Unicode)let tup: (i32, f64, u8) = (500, 6.4, 1);let arr: [i32; 3] = [1, 2, 3];(固定长度)&[i32]struct Person { name: String, age: u32 }enum Result<T, E> { Ok(T), Err(E) }Box<T>:堆上分配Rc<T>:引用计数(单线程)Arc<T>:原子引用计数(多线程)Cell<T> / RefCell<T>:内部可变性&T,可以有多个&mut T,同一时间只能有一个&T)&mut T)'a,标注引用的有效范围'static,整个程序生命周期// 所有权与借用示例
fn main() {
let s1 = String::from("hello"); // s1 拥有所有权
let s2 = s1; // 移动,s1 不再有效
// println!("{}", s1); // 编译错误:s1 已失效
let s3 = String::from("world");
let s4 = &s3; // 不可变借用
let s5 = &s3; // 可以多个不可变借用
println!("{} {}", s4, s5);
let mut s6 = String::from("hello");
let s7 = &mut s6; // 可变借用
// let s8 = &s6; // 编译错误:不能在可变借用时再不可变借用
s7.push_str(" world");
println!("{}", s7);
}
match x { Some(n) if n > 10 => ... }enum Coin {
Penny,
Nickel,
Dime,
Quarter,
}
fn value_in_cents(coin: Coin) -> u8 {
match coin {
Coin::Penny => 1,
Coin::Nickel => 5,
Coin::Dime => 10,
Coin::Quarter => 25,
}
}
Ok(T) 或 Err(E)Some(T) 或 None)? 运算符: 传播错误,简化错误处理unwrap() / expect(): 遇到错误直接 panic(生产环境慎用)panic!(): 不可恢复错误,程序崩溃use std::fs::File;
use std::io::Read;
fn read_file() -> Result<String, std::io::Error> {
let mut file = File::open("hello.txt")?;
let mut content = String::new();
file.read_to_string(&mut content)?;
Ok(content)
}
fn largest<T: PartialOrd>(list: &[T]) -> &Tstruct Point<T> { x: T, y: T }trait Summary { fn summarize(&self) -> String; }impl Summary for NewsArticle { ... }fn notify(item: &impl Summary) 或 fn notify<T: Summary>(item: &T)trait Iterator { type Item; ... }use tokio::time::{sleep, Duration};
#[tokio::main]
async fn main() {
let handle = tokio::spawn(async {
sleep(Duration::from_secs(1)).await;
println!("World");
});
println!("Hello");
handle.await.unwrap();
}
std 标准库、core 核心库(无 OS 环境)Vec、HashMap、HashSet、BTreeMapRust 的所有权系统在编译期保证内存安全,无需垃圾回收。这意味着:
Rust 的类型系统在编译期检查数据竞争:
Rust 的高层抽象在编译后被优化为底层代码,没有运行时开销。迭代器、闭包、异步等特性都遵循零成本原则。
cargo doc 自动生成文档Rust 的编译器以"友好"著称,不仅告诉你哪里错了,还会给出建议的修复方案。
安装 Rust、Cargo、基础语法、变量、数据类型、控制流、函数
所有权、借用、生命周期、Vec、String、HashMap
Trait、泛型、闭包、迭代器、模式匹配、错误处理(Result / Option)
智能指针、并发、async/await、Tokio、Web 框架(axum/actix-web)
Rust 是系统编程领域的"革命者"。
它解决了 C/C++ 几十年来困扰开发者的内存安全问题,同时保持了零成本抽象和极致性能。虽然学习曲线陡峭,但 Rust 的编译器会"手把手"教你写出正确、安全的代码。
Rust 正在被 Linux 内核、Windows 内核、Android 系统、浏览器引擎等核心基础设施采纳。Rust 不是要杀死 C++,而是为系统编程提供了一条更安全的道路。
"Rust 是你在 2024 年能学到的最有价值的编程语言之一。" 🦀