Rust学习路线制定

119 阅读3分钟

阶段一:环境搭建与基础语法

学习目标

  • 安装Rust工具链
  • 理解基本语法结构
  • 掌握变量、数据类型和控制流

学习步骤

  1. 安装Rustup
  2. 使用cargo new创建第一个项目
  3. 学习:
    • 变量与不可变性(let vs let mut
    • 基本数据类型(i32, f64, bool, char
    • 控制流(if/else, loop, while, for
    • 函数定义与模块化

练习题

  1. 编写程序打印"Hello, Rust!",并编译运行。
  2. 声明一个可变变量x,初始值为5,随后修改为10并打印。
  3. 实现函数is_even(num: i32) -> bool,判断数字是否为偶数。
  4. 使用for循环计算1到100的和。

阶段二:所有权与引用

学习目标

  • 理解所有权(Ownership)、借用(Borrowing)、生命周期(Lifetime)
  • 避免常见内存错误

学习步骤

  1. 阅读《Rust程序设计语言》第4章
  2. 练习字符串(String vs &str)操作
  3. 理解引用规则:
    • 同一作用域内,要么一个可变引用,要么多个不可变引用
    • 引用的生命周期不能超过其指向的数据

练习题

  1. 编写函数calculate_length(s: &String) -> usize,返回字符串长度。
  2. 尝试在函数中转移字符串所有权,观察编译错误。
  3. 创建一个结构体Person,包含name: Stringage: u8,并编写方法introduce(&self)打印信息。

阶段三:结构体与枚举

学习目标

  • 掌握结构体(Struct)和枚举(Enum)的定义与使用
  • 学习模式匹配(match

学习步骤

  1. 定义包含不同类型字段的结构体
  2. 学习impl块为结构体添加方法
  3. 使用match处理枚举变体

练习题

  1. 定义结构体Rectangle(宽/高),编写方法area计算面积。
  2. 创建枚举Message,包含QuitMove { x: i32, y: i32 }Write(String),并用match处理各变体。
  3. 实现Option<T>的简单版本,用match处理SomeNone

阶段四:错误处理

学习目标

  • 使用Result<T, E>Option<T>处理错误
  • 避免panic!,学习unwrapexpect

学习步骤

  1. 阅读错误处理最佳实践
  2. 使用?运算符传播错误
  3. 自定义错误类型

练习题

  1. 编写函数读取文件内容,处理File::open可能的错误。
  2. 实现一个解析整数的函数,返回Result<i32, ParseIntError>
  3. 创建自定义错误类型MyError,实现std::error::Error trait。

阶段五:泛型与Trait

学习目标

  • 掌握泛型编程
  • 理解Trait与Trait Bound

学习步骤

  1. 定义泛型函数和结构体
  2. 实现常见Trait(Debug, Clone, Display
  3. 学习IteratorDrop Trait

练习题

  1. 实现泛型函数largest<T: PartialOrd>(list: &[T]) -> &T,返回列表中最大元素。
  2. 为结构体Point<T>实现Display Trait,格式化输出坐标。
  3. 创建Trait Drawable,包含方法draw(&self),并为结构体CircleSquare实现它。

阶段六:并发编程

学习目标

  • 使用线程与消息传递(std::threadmpsc
  • 理解SendSync Trait

学习步骤

  1. 创建线程处理并发任务
  2. 使用通道(Channel)在线程间传递数据
  3. 学习Arc<Mutex<T>>共享状态

练习题

  1. 启动两个线程,分别计算1-500和501-1000的和,最后合并结果。
  2. 实现生产者-消费者模型:一个线程生成数字,另一个线程处理平方运算。
  3. 使用Mutex保护共享的计数器,多个线程并发递增。

阶段七:高级特性(可选)

学习目标

  • 宏(Macro)
  • Unsafe Rust与FFI(Foreign Function Interface)

练习题

  1. 编写宏vec_print!,打印向量所有元素。
  2. 通过FFI调用C函数add(int a, int b),返回结果。

阶段八:项目实战

推荐项目

  1. CLI工具:实现文件内容统计(类似wc
  2. Web服务:用actix-web搭建REST API
  3. 小游戏:终端贪吃蛇(使用crossterm库)

学习资源