Rust 入门核心笔记
一、Rust核心概念
1. 所有权(Ownership)
- 每个值都有且只有一个所有者。
- 当所有者离开作用域,其拥有的值会自动被释放。
示例:
fn main() {
let s1 = String::from("hello");
let s2 = s1; // 所有权转移,s1不可再使用
// println!("{}", s1); // 这行会报错
println!("{}", s2); // 正确
}
🔍 示例解释(补充)
📌 代码拆解:let s1 = String::from("hello");
这一行代码涉及几个关键概念:
let s1 = String::from("hello");
| 部分 | 含义 |
|---|---|
String |
Rust 标准库中的类型,表示“可变的堆分配字符串” |
:: |
用于访问类型中的函数或常量 |
from |
String 类型的关联函数,用来从 &str 生成一个堆上的 String |
"hello" |
字符串字面值,类型是 &str,存储在程序的只读内存中 |
所以,String::from("hello") 的意思是:
把
"hello"这个不可变的字符串字面值转换成堆分配、可修改的String对象。
📦 类比记忆(箱子比喻):
你可以把这句代码理解为:
s1是一个String类型的箱子,这个箱子里一开始放的是"hello"。你可以以后换成别的内容,但这个箱子始终是String类型的。
"hello"是初始内容,不是箱子的名字;s1是变量名,相当于箱子的编号;- 可以更改箱子里装的内容,但箱子的类型不会变。
例如:
let mut s1 = String::from("hello");
s1.push_str(", world");
println!("{}", s1); // 输出:hello, world
2. 借用(Borrowing)
- 引用值但不获取所有权。
- 有不可变借用(
&)和可变借用(&mut)两种。
示例:
fn main() {
let mut s = String::from("hello");
borrow(&s);
mutable_borrow(&mut s);
println!("{}", s);
}
fn borrow(s: &String) {
println!("borrowed: {}", s);
}
fn mutable_borrow(s: &mut String) {
s.push_str(", world");
}
3. 生命周期(Lifetime)
- 生命周期是编译器用于追踪引用有效性的机制,防止悬垂引用。
示例:
fn main() {
let result;
let string1 = String::from("hello");
{
let string2 = String::from("world");
result = longest(string1.as_str(), string2.as_str());
println!("最长的字符串是: {}", result);
}
}
fn longest<'a>(x: &'a str, y: &'a str) -> &'a str {
if x.len() > y.len() {
x
} else {
y
}
}
4. 模式匹配(Pattern Matching)
- Rust 的强大控制流工具,通常与
match一起使用。
示例:
fn main() {
let number = 3;
match number {
1 => println!("One"),
2 => println!("Two"),
3 => println!("Three"),
_ => println!("Other"),
}
}
二、Rust基础语法及示例
1. 变量与可变性
let x = 5; // 不可变变量
let mut y = 10; // 可变变量
y = 20;
2. 数据类型
- 基本类型:整型 (
i32,u32)、浮点型 (f64)、布尔型 (bool)、字符型 (char) - 复合类型:元组(Tuple)、数组(Array)
let tup = (500, 6.4, 'z');
let (x, y, z) = tup;
let arr = [1, 2, 3, 4, 5];
let first = arr[0];
3. 函数与返回值
fn add(a: i32, b: i32) -> i32 {
a + b // 不加分号表示返回
}
4. 控制流
条件语句:
let number = 6;
if number % 4 == 0 {
println!("可被4整除");
} else {
println!("不可被4整除");
}
循环语句:
for i in 0..5 {
println!("{}", i);
}
三、Rust工具链基础
- 安装 Rust:使用 rustup
- 常用命令:
cargo new
<project_name> # 创建项目
cargo build # 编译项目
cargo run # 编译并运行项目
cargo test # 运行测试
四、后续学习建议
- 多练习真实项目,边写边学。
- 善用 AI 工具辅助理解难点。
- 阅读官方文档和社区 Crate 提升开发效率。
- 定期复习本笔记,巩固基础知识。
- 推荐书籍:《Rust 程序设计语言》(The Rust Programming Language)
通过以上内容,你已经掌握 Rust 编程入门的核心概念和语法。后续可以逐步挑战更高级的功能如错误处理、并发编程、泛型与 trait 等等。