Rust 学习路线,供初学者参考

一、基础语法(入门必学)

  1. 开发环境:rustup、cargo(new/build/run/check/test/doc)、crates.io
  2. 变量与可变性:let、mut、常量const、静态变量static、隐藏(shadowing)
  3. 基础数据类型
    • 标量:整数(i/u系列)、浮点数(f32/f64)、bool、char
    • 复合:元组tuple、数组array、切片slice &[T]
  4. 注释、格式化输出 println!、format!
  5. 控制流:if、loop/while/for、break带返回值、标签循环
  6. 函数:参数、返回值、表达式(无分号)、函数指针
  7. 所有权核心基础(Rust 灵魂)
    • 所有权规则、移动语义move、拷贝Copy、克隆clone
    • 借用 &T、可变借用 &mut T、借用检查器、悬垂引用dangling reference
    • 借用规则:同一时间,只能一个可变借用 / 多个不可变借用,不能混用
  8. 切片:字符串切片&str、数组切片,理解String和&str区别

二、核心类型与集合

  1. String:创建、追加、索引误区、遍历、UTF-8
  2. 集合容器:Vec<T>、HashMap<K,V>、HashSet、BTreeMap/BTreeSet
  3. 结构体 struct:普通结构体、元组结构体、单元结构体、方法impl、关联函数
  4. 枚举 enum:基础枚举、带数据枚举、Option<T>、Result<T,E>(重中之重)
  5. match匹配、模式匹配、if let / while let、解构、_通配符
  6. 错误处理
    • 可恢复错误:Result、?运算符、unwrap/expect
    • 不可恢复:panic!、backtrace

三、生命周期(难点)

  1. 生命周期标注 <'a>,生命周期参数含义
  2. 生命周期省略规则(elision)
  3. 结构体/枚举上绑定生命周期
  4. 静态生命周期 'static
  5. 理解:生命周期只是编译器校验标记,不改变运行期

四、Trait 特征(多态核心)

  1. trait 定义、实现 trait、默认方法
  2. trait 作为参数(impl Trait)、trait 对象 dyn Trait(动态分发)
  3. 泛型 + trait bound(T: Trait1 + Trait2)、where 子句
  4. 孤儿规则:外部trait不能给外部类型实现
  5. 常用标准库Trait:
    • Debug、Display、Clone、Copy、Default、PartialEq/Eq、PartialOrd/Ord、Into/From
  6. 关联类型 associated types

五、泛型

  1. 泛型函数、泛型结构体、泛型枚举
  2. 泛型单态化 monomorphization(编译期展开,无运行开销)

六、模块与包管理

  1. 模块 module mod、可见性 pub
  2. 路径:绝对路径、相对路径、super、crate
  3. use导入、别名as、pub use重导出
  4. Cargo.toml:依赖、版本、特性features、工作空间workspace
  5. 二进制包 / 库包区别

七、智能指针(堆分配、特殊所有权)

  1. Box<T>:堆分配,最简单智能指针
  2. Rc<T>:单线程引用计数,clone增加计数
  3. RefCell<T>:内部可变性(interior mutability),运行时借用检查
  4. Rc<RefCell<T>> 组合用法
  5. Arc<T>:多线程安全引用计数
  6. Mutex<T>、RwLock<T>(同步原语,后面并发也要用)

八、闭包与迭代器

  1. 闭包语法、捕获规则(move/引用/可变引用)、闭包类型 Fn/FnMut/FnOnce
  2. 迭代器 Iterator trait,next()
  3. 适配器:map/filter/flat_map/zip/enumerate/collect等
  4. 迭代器是懒执行

九、并发编程(Rust强项)

  1. 线程 std::thread::spawn、move闭包捕获
  2. 通道channel:std::sync::mpsc 多生产者单消费者
  3. 同步原语:Mutex<T>、RwLock<T>、Condvar
  4. Arc<T> + 锁 共享跨线程数据
  5. Send / Sync trait:线程安全标记,理解什么类型不满足Send/Sync
  6. 无锁基础概念(可选进阶)

十、进阶语法&标准库高频

  1. 宏 macro
    • 声明宏 macro_rules!、过程宏proc-macro(derive/attribute/function-like)
    • 常用派生宏 #[derive(xxx)]
  2. unsafe Rust(重点:知道什么时候必须unsafe,谨慎使用)
    • 裸指针 *const T / *mut T
    • 调用unsafe函数、实现unsafe trait
    • 不安全块,unsafe的五个场景
  3. 异步 async/.await(后端必学)
    • Future trait、Executor执行器
    • tokio 生态(主流)、多任务、spawn、join!、select!
    • async 生命周期、Pin、Stream
  4. 类型转换:as强转、From/Into、TryFrom/TryInto
  5. 类型别名 type、newtype模式(封装)

十一、工程实践 & 生态

  1. 测试:单元测试 #test、集成测试、doc-test文档测试
  2. 错误最佳实践:thiserror(自定义错误)、anyhow(快速错误上下文)
  3. 日志:tracing / log
  4. Serde:序列化反序列化(json等)
  5. 常用框架:
    • Web:Axum(主流)、Actix-web
    • CLI:clap
    • 数据库:sqlx
  6. 性能调优:cargo bench、profiling、内存模型
  7. 安全习惯:避免滥用unsafe、最小可变、优先组合而非继承

十二、底层进阶(内核/高性能方向,可选)

  1. 内存布局:repr©/repr(packed)、对齐align
  2. FFI:调用C代码、给C提供Rust库
  3. 内存分配器、no_std 无标准库开发(嵌入式、内核)
  4. 裸机、中断(嵌入式Rust)

相关推荐
喵了几个咪4 小时前
GoWind CMS 拆解:给 NL2SQL 上四把锁——智能问数的安全边界
开发语言·后端·安全·微服务·golang·gowind
多弗朗皮卡丘4 小时前
C++的类型转换
开发语言·c++
FLJwu5 小时前
运动相机图像传感器选型实战|第二篇:参数看着一模一样,为什么骑行录像疯狂果冻、拖影翻车?
android·c语言·开发语言·数码相机·运动相机·oem 量产
驭渊的小故事5 小时前
从 JVM 底层看泛型:泛型擦除、Signature 属性与 Super Type Token 模式
java·开发语言·jvm
Escalating_xu5 小时前
【C语言项目实战】贪吃蛇(下):移动、碰撞与计分,完成一局可玩的游戏
c语言·开发语言·游戏
qq_401700416 小时前
Qt Modbus 源码剖析:从 QModbusClient 到工业级通信框架
开发语言·qt·系统架构
星夜离尘566 小时前
MATLAB 角度解缠遇到丢样:先分段,再说明圈数为什么不可恢复
开发语言·matlab
我命由我123456 小时前
6-2.Python 异常处理 - 异常捕获(捕获指定异常、常见异常类型、异常信息)
java·运维·开发语言·python·http·https·java-ee
ZoeLandia6 小时前
React08:自定义 Hook
开发语言·前端·react.js·typescript