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 等等。

发表回复

Your email address will not be published. Required fields are marked *.

*
*