Rust是一门系统编程语言,它结合了C/C++的性能与现代语言的安全性。无论是系统开发、网络服务还是嵌入式开发,Rust都是现代选择。本指南将带你从Rust基础进阶到精通的系统编程之路。
第一章:Rust基础
理解Rust的核心概念和哲学:
1. 为什么选择Rust
- 内存安全:无垃圾回收,所有权系统防止常见错误
- 高性能:零成本抽象,接近C/C++的速度
- 现代工具链:Cargo包管理器,完善的文档
- 活跃社区:快速增长,丰富的生态
2. "Hello World" 与环境搭建
// 安装 Rust
curl --proto 'https://' --tlsv1.2 -sSf https://sh.rustup.rs | sh
# 验证安装
rustc --version
cargo --version
# 创建新项目
cargo new my-project
cd my-project
# 运行程序
cargo run
第二章:Rust核心语言
1. 基本语法
// 变量与不可变性
let x = 5; // 默认不可变
let mut y = 5; // 可变
// 常量
const MAX_SPEED: u32 = 200;
// 数据类型
let integer: i32 = 42;
let floating: f64 = 3.14;
let boolean: bool = true;
let char: char = 'A';
// 数组与切片
let arr = [1, 2, 3, 4, 5];
let slice = &arr[1..3];
2. 函数
// 函数定义
fn add(a: i32, b: i32) -> i32 {
a + b
}
// 函数式风格
fn factorial(n: u32) -> u32 {
(1..=n).product()
}
// 主函数
fn main() {
println!("Hello, world!");
println!("1 + 2 = {}", add(1, 2));
}
第三章:所有权与借用
Rust最独特的特性:
1. 所有权规则
- 每一个值都有且仅有一个所有者
- 值可以有多个借用
- 当所有者离开作用域,值将被丢弃
2. 借用与引用
// 借用
fn calculate_length(s: String) -> usize {
s.len()
}
let s = String::from("hello");
let len = calculate_length(s); // s被移动了
// 借用 (引用)
fn change(first: &mut String) {
first.push_str(" world");
}
let mut s = String::from("hello");
change(&mut s);
第四章:集合类型
1. Vector
// 创建和使用
let mut v = Vec::new();
v.push(1);
v.push(2);
v.push(3);
// 遍历
for i in &v {
println!("{}", i);
}
// 常用方法
v.len(); // 长度
v.push(x); // 添加元素
v.pop(); // 移除并返回最后元素
2. HashMap
// 创建和使用
use std::collections::HashMap;
let mut scores = HashMap::new();
scores.insert(String::from("Blue"), 10);
scores.insert(String::from("Yellow"), 50);
// 访问
let team_name = String::from("Blue");
let score = scores.get(&team_name);
// 遍历
for (key, value) in &scores {
println!("{}: {}", key, value);
}
第五章:错误处理
Rust的结果类型:
// Option枚举
enum Option<T> {
None,
Some(T)
}
// Result枚举
enum Result<T, E> {
Ok(T),
Err(E)
}
// ?运算符
fn divide(a: f64, b: f64) -> Result<f64, String> {
if b == 0.0 {
Err("Division by zero".to_string())
} else {
Ok(a / b)
}
}
// ?运算符传播错误
fn example() {
let result = divide(10.0, 2.0)?;
println!("Result: {}", result);
}
总结
从入门到精通Rust的路径包括:
- 掌握基本语法和环境搭建
- 理解所有权、借用和生命周期
- 学习集合类型和错误处理
- 实践函数式编程和泛型
- 探索异步编程和高级特性
记住,Rust的学习曲线比较陡峭,但採其所有权系统后,你将获得无与伦比的内存安全和性能。从今天开始编写第一个Rust程序,拥抱编译器的反馈,它是你最好的导师。
最重要的原则:让编译器先行,重视类型安全,关注内存布局。