⚡ 编程实验室🏗️ HTML🎨 CSS⚡ JavaScript🐍 Python🗄️ SQL☕ Java⚛️ React💚 Vue🟢 Node.js⚙️ C语言🐘 PHP🐹 Go🔷 TypeScript🐬 MySQL🔧 C++🎯 C#🦀 Rust🅱️ Bootstrap💡 jQuery🎸 Django🍃 MongoDB👗 Sass🎪 Kotlin📊 R语言📋 XML📊 Excel🐘 PostgreSQL🐳 Docker🅰️ Angular🎮 游戏🏠 网站首页

🦀 Rust 学习路线

122 个互动教程

Rust 入门教程 — 现代系统编程语言

从零开始学习 Rust:了解 Rust 是什么、为什么学、写出第一个 Rust 程序

Rust Vec集合

学习Vec

Rust 字符串

String vs &str, 拼接, 格式化

Rust HashMap

键值对集合的创建与操作

Rust 字符串深入

学习String操作

Rust Cargo包管理

学习Cargo

Rust 所有权 — 最核心的概念

深入理解 Rust 所有权系统的三大规则:移动、克隆、借用

Rust 结构体与实现

struct 定义数据,impl 定义方法,derive 派生宏

Rust 模式匹配

学习match

Rust Trait — 接口抽象

trait 定义共享行为,impl Trait 语法

Rust Result 错误处理

Result<T,E>/unwrap/expect/?

Rust 闭包

|params| body 捕获环境

Rust 模块系统

学习mod

Rust 泛型与 trait 约束

泛型函数 + trait bound 类型安全

Rust 迭代器 — Iterator

iter/map/filter/collect 链式处理数据

Rust 生命周期

引用有效范围标注,编译器自动推断

Rust 测试

#[test] 单元测试、assert!

Rust 线程 — 并发执行

thread::spawn 创建线程,join 等待完成

Rust Channel 通道

mpsc 线程间安全通信

Rust 借用与引用 — 安全地共享数据

& 不可变借用、&mut 可变借用、借用规则详解

Rust Option 与 Result

Option/Result 枚举处理空值和错误

Rust ? 运算符

? 传播错误简化代码

Rust Trait 对象

dyn Trait 动态分发

Rust 切片类型

学习切片

Clone与Copy区别

理解Clone与Copy trait的核心区别:Copy是隐式按位复制,Clone是显式深度克隆。

Rust 枚举与模式匹配

enum/Option/Result/match/if let

Mutex与RwLock互斥读写

对比Mutex(单一锁)和RwLock(读写锁)的适用场景与性能差异。

rayon并行迭代器

使用rayon库将普通迭代器转换为并行迭代器,轻松实现数据并行处理。

Rust 异步编程深入

Rust异步深入:Pin固定/Unpin、Waker唤醒机制、async block/future、tokio Runtime运行原理、spawn任务调度、select!竞态选择

Rust FFI 外部函数接口

Rust FFI:extern "C"导出C接口、unsafe块调用外部函数、cbindgen生成C头文件、从Python/Node.js调用Rust库、内存布局对齐

Rust Serde 序列化库

Serde:Serialize/Deserialize derive宏、JSON/YAML/TOML等格式支持、#[serde(rename/alias/default/skip/flatten)]属性、自定义序列化/反序列化、与axum/actix集成

Rust Clippy 与代码质量

Rust代码质量:cargo clippy静态检查上百条lint规则、cargo fmt格式化、cargo deny依赖审计、cargo audit安全漏洞扫描、#[deny]/#[warn]属性控制

Rust Axum Web框架

Axum框架(Tokio生态):Router路由、Extractors提取器(Path/Query/Json/State共享状态)、Middleware tower层、Error Handling、WebSocket支持、与Actix-web对比

Rust Diesel ORM

Diesel ORM:Schema定义(diesel print-schema)、Model关联、CRUD操作(insert/update/delete/select)、Filter过滤、Join连接、Migration迁移管理、类型安全SQL构建

Rust unsafe 安全抽象

Rust unsafe:unsafe块/unsafe函数/unsafe trait/unsafe impl、原始指针dereference、调用FFI外部函数、实现Send/Sync、unsafe的最佳实践文档化Safety条件、用safe API封装unsafe代码

Rust Pin 与 Unpin 深入

Pin深入:为什么Future需要Pin(自引用结构体)、Pin<Box<T>>/pin!宏、Unpin auto trait(大部分类型都是Unpin)、Pin::as_mut()获取可变引用、与async/await底层关系

Rust Channel 消息传递

Rust Channel深入:std::sync::mpsc多生产者单消费者channel、sync_channel有界通道背压、crossbeam多生产者多消费者MPMC channel、tokio::sync::mpsc异步channel、oneshot单次channel

Rust Trait Object 与动态分发

Trait Object:dyn关键字、虚函数表vtable、何时使用Box<dyn Trait>(异构集合/依赖注入)、对象安全Object Safety(方法不能有泛型参数/不能返回Self)、与泛型静态分发对比

Rust Rayon 数据并行

Rayon并行计算库:.par_iter()/par_iter_mut()并行迭代器(自动拆分工作到线程池)、par_sort/par_extend、reduce/fold并行规约、ThreadPoolBuilder配置线程数、与std::thread手动并行的对比

Tokio 异步运行时深入

Tokio深入:#[tokio::main]宏展开(多线程调度器multi_thread/单线程current_thread)、tokio::select!宏竞赛模式、tokio::sync模块(Mutex/RwLock/Notify/Barrier/Semaphore/channel)、自定义Future实现

Rust Cargo Workspace 工作空间

Cargo Workspace多包管理:根Cargo.toml [workspace] members定义、包间依赖路径依赖、共享Cargo.lock统一版本、workspace.package集中配置、workspace.dependencies集中依赖版本管理

Rust build.rs 构建脚本

build.rs构建脚本:编译时执行(生成代码/编译C依赖/检测系统库/设置环境变量)、cargo:rerun-if-changed触发重编译条件、cargo:rustc-link-lib链接外部库、cc crate编译C文件

Rust 借用分割

Rust借用分割:结构体字段级借用(同时可变借用不同字段/编译器知道不冲突)、split_at_mut切分可变切片为两个不重叠部分、RefCell运行时借用检查、Cell内部可变性(Copy类型)

Rust Cow 写时克隆

Rust Cow<'a,T>(Clone on Write写时克隆):Borrowed引用不分配/ Owned需要修改时克隆、适合大多数情况不需修改的场景(字符串处理/配置/模板渲染)、from/std::borrow::Cow

Rust 声明宏深入

macro_rules!声明宏深入:匹配分支(pattern => template)、重复模式$(...)* + ? 、tt token tree、递归宏、调试macro_rules!(cargo expand展开)、与过程宏对比(简单/编译快/声明式)

Rust Criterion 基准测试

Criterion基准测试框架深入:#[bench]基准测试/基准组、通过HTML报告分析性能回归、参数化基准测试、与cargo bench标准库对比(防编译器优化死代码/Bencher黑盒)、测量统计p值判断差异是否显著

Rust 过程宏深入

Rust过程宏详细:#[proc_macro]函数式宏、#[proc_macro_derive]派生宏(Derive Macro)、#[proc_macro_attribute]属性宏、TokenStream→TokenStream输入输出Token操作、syn crate解析AST/quote crate生成TokenStream、proc_macro_error友好错误信息、编译性能注意事项

Cell内部可变性

通过Cell和RefCell实现内部可变性,绕过借用规则在不可变引用下修改数据。

Rust 线程局部存储

Rust线程局部存储:std::thread_local!宏(每个线程独立变量副本)、thread_local!(static FOO:RefCell<u32>=...)、LocalKey<T>的with方法借用访问、与全局static对比(避免全局锁/线程隔离)

Rust rustdoc 文档生成

rustdoc文档生成工具:///文档注释(支持Markdown/代码块测试自动cargo test执行)、//!模块级别文档、cargo doc生成HTML(cargo doc --open浏览器打开)、文档链接[module]/[struct@Foo]/[fn@function]、文档测试验证示例正确性、文档属性#[doc(hidden)]隐藏内部API

Rust Miri 未定义行为检测

Miri(MIR Interpreter/检测Rust代码中的Undefined Behavior未定义行为):cargo +nightly miri test运行测试检测UB(use-after-free/数据竞争/未对齐指针/null指针解引用/无效枚举判别值/栈内存返回/整数溢出)、与Sanitizers(ASan)对比(Miri在编译时MIR层/可在非x86上运行)

Rust no_std 嵌入式开发

Rust no_std标准库子集(嵌入式裸机/内核开发/WebAssembly不包含操作系统依赖):#![no_std]声明、core库(Option/Result/Iterator/slice基本类型)、alloc库(需要分配器的String/Vec/Box)、与libc crate交互

Rust 并发原语

Rust并发原语:Mutex/RwLock(阻塞/ std)、tokio::sync::Mutex(异步/不阻塞线程)、Notify(通知唤醒单个任务)、Barrier(屏障同步等待所有任务)、Semaphore(信号量限制并发数)、oneshot channel(单值异步通道)

Rust 枚举进阶模式

Rust枚举进阶:枚举携带数据的各种模式(Option<T>/Result<T,E>错误处理、带数据的命令模式、递归枚举如Expr需要Box缩进、Never type !/Infallible)、与Trait Object动态分发对比(枚举静态分发/编译时穷尽检查/adding variant需修改enum但类型安全更好)

Rust cargo-binstall 二进制安装

cargo-binstall二进制安装替代cargo install从源码编译:cargo binstall <crate>直接从GitHub Releases下载预编译二进制、自动检测平台架构、与cargo install对比速度快数十倍

filter_map过滤转换

利用filter_map同时完成过滤和映射操作,优雅处理Option和Result类型。

Rust 入门 — 安装与Hello World

Rust语言简介、rustup安装工具链、cargo包管理器(new/build/run)、第一个Hello World项目、Cargo.toml配置、Rust特点:内存安全/零成本抽象

Rust 借用与引用

Rust借用:不可变引用&T(可多个)、可变引用&mut T(同一时刻只能有一个)、引用的生命周期、悬垂引用编译错误、借用规则总结

Rust Vec 与 HashMap 集合

Rust集合:Vec<T>(push/pop/get/索引/遍历iter)、HashMap<K,V>(insert/get/entry/or_insert)、使用collect()从迭代器收集、元组解包遍历

Rust 结构体与枚举

Rust结构体(命名/元组/单元结构体)、impl实现方法、枚举enum、Option<T>(替代null/有None和Some<T>)、Result<T,E>(错误处理/Ok和Err)、match模式匹配

Rust智能指针详解

学习Box、Rc、RefCell等智能指针的原理与用法

Rust 错误处理 — Result与?运算符

Rust错误处理:Result<T,E>类型、unwrap/expect(panic风险)、?运算符传播错误、map_err转换错误类型、自定义错误类型、anyhow/thiserror库

Rust Deref特型:解引用操作符的秘密

理解Deref和DerefMut如何实现自动解引用与隐式转换

Rust Drop特型:资源清理的自动魔法

掌握Drop特型,实现自定义的资源释放逻辑

Rust宏编程入门

学习声明式宏和过程宏的基础概念与编写方法

Rust异步编程基础

理解async/await语法、Future特型和基本异步运行时

Rust Web开发 — Actix-Web框架

Rust Actix-Web:HttpServer启动、route路由、App配置、Extractors提取器(Path/Query/Json)、Middleware中间件、Actix Actor模型

Rust Tokio运行时实战

学习使用Tokio创建异步任务、处理并发和I/O操作

Rust Serde序列化框架

掌握使用Serde进行JSON、YAML等格式的序列化与反序列化

Rust Rayon并行计算

使用Rayon库轻松将迭代器转换为并行执行

Rust thiserror错误处理库

使用thiserror简化自定义错误类型的实现

Rust anyhow:灵活的错误处理

使用anyhow简化应用程序级错误处理与上下文传递

Rust 智能指针入门

学习 Box、Rc 和 RefCell 智能指针的概念与使用场景

Rust Deref 特征详解

理解 Deref 和 DerefMut trait 如何实现智能指针的解引用操作

Rust Drop 特征与资源清理

掌握 Drop trait 在变量离开作用域时自动释放资源的机制

Rust 宏编程基础

学习声明式宏(macro_rules!)和过程宏的概念与使用

Rust 异步编程入门

理解 async/await 语法和 Future trait 实现并发的基本方法

Rust Deref trait:智能指针的解引用魔法

学习Deref trait如何让智能指针像普通引用一样使用,以及自动解引用规则

Rust Drop trait:资源释放的精确控制

理解Drop trait如何自动清理资源,以及提前释放的技巧

Rust宏:元编程的利器

学习声明式宏和过程宏的基本概念,以及如何用宏减少重复代码

Rust异步编程入门

理解async/.await语法、Future trait以及运行时(如tokio)的基础使用

Rust异步编程基础

学习async/await语法和异步运行时

Rust 中静态派发与动态派发的性能陷阱

深入分析 trait 对象与泛型单态化的底层实现,揭示虚函数表开销与代码膨胀的权衡,并通过微基准测试验证不同场景下的性能差异。

PhantomData 与类型状态机:在编译期消除非法状态

利用 PhantomData 作为类型级标记,结合零大小类型构建类型状态机,将运行时错误(如读取未初始化资源)转化为编译错误,同时保持零运行时开销。

Pin 与 Unpin:安全构建自引用结构体

解析 Pin 的内存语义,通过自引用链表示例展示如何安全保证对象不移位,避免悬垂指针。对比 Box::pin 与 pin! 宏,讲解 Unpin auto trait 的作用。

Const 泛型与变长计算:编译期矩阵乘法优化

利用 const 泛型(如 N: usize)在类型层面表达矩阵维度,实现编译期形状检查,并配合 const 表达式展开循环,生成无运行时开销的矩阵乘法。

全局分配器重载与自定义 arena 分配器

实现 GlobalAlloc trait 构建线程局部分配器,分析标准分配器性能瓶颈,设计 arena 分配器用于高频短生命周期对象的零碎片分配。

Async Drop 与安全取消:构建可中止的异步任务

探讨 Rust 异步中异步析构(AsyncDrop 提案)的缺失,用 select! + cancellation token 模式实现资源安全释放,避免已取消 future 的内存泄漏。

FFI 安全边界:从 repr(C) 到 safer_ffi 过程宏

深入 Rust FFI 的内存布局隐患,演示 repr(C) 与 repr(align) 控制结构体对齐,使用 safer_ffi crate 自动生成 C 兼容接口并插入边界检查,避免未定义行为。

内联汇编与零成本抽象:Rust 中嵌入 SIMD 指令

使用 core::arch 中的平台特定内联函数与 asm! 宏直接生成 SIMD 指令,在保持 Rust 抽象能力的同时获得接近手写汇编的性能。

过程宏实战:解析、转换与生成 AST

从零实现派生宏和属性宏,深入 proc_macro::TokenStream 与 syn/quote 库,在编译期对结构体进行 AST 变换(如自动实现 Builder 模式)。

io_uring 与异步 I/O:零拷贝网络代理

利用 tokio-uring 或直接 io_uring 系统调用构建异步 TCP 代理,实现内核级零拷贝(splice),避免用户态缓冲区复制,达到接近硬件极限的吞吐量。

深入 unsafe:自定义 ABI 与内存布局的实战艺术

超越 FFI 基础,学习如何在 unsafe 中手动构造符合任意底层协议的内存布局,例如无头链表、定长池分配器。

Pin 投影实战:手动实现自引用结构与 PhantomPinned 的精妙配合

不再恐惧 Pin<&mut T>,通过构建一个自引用双向链表节点,掌握投影的安全边界与内部可变性。

类型级编程:用 GAT 和类型族模拟高阶类型(Higher-Kinded Types)

Rust 没有原生 HKT,但利用泛型关联类型(GAT)和 trait 约束可逼近其能力,实现抽象函子与 monad。

异步 Drop 与安全取消:构建结构化取消令牌(CancellationToken)

超越简单的 select!,深入 async 析构与取消的底层机制,编写生产级取消令牌。

自定义分配器:从头编写 Arena 分配器并与 Vec<T> 集成

不止是 GlobalAlloc,本教程教你实现一个引用跨度的区域分配器,并安全地用于集合。

const 泛型进阶:编译期向量数学库与 SIMD 代码生成

利用 const 泛型在编译期确定维度,自动生成 SIMD 加速的线性代数运算,无运行时泛型开销。

零拷贝反序列化:使用 &[u8] 和借贷系统构建无分配解析器

不依赖 serde 与 deserialize,手动从字节切片借出 &str 和 &[u8],实现真正的零拷贝。

Trait 型变与幽灵生命周期:设计安全的协变/逆变抽象

理解型变(variance)在 trait 上的深层影响,并用 PhantomData 控制子类型关系。

过程宏实战:自动生成状态机转换代码(状态模式编译器)

超越 derive 宏,编写一个属性宏,将枚举状态定义编译为类型安全的转换表与 match 代码。

无锁数据结构:从内存排序到构建无锁 MPMC 队列(只使用 std)

不依赖 crossbeam,只用 Atomic 操作和 Ordering 语义实现一个生产者-消费者队列。

Phantom类型与所有权魔术:零大小类型的生命周期博弈

揭秘PhantomData在所有权、生命周期和并发标记中的深层应用,掌握如何用零大小类型操控编译期约束。

Pin与Unpin的幕后:自引用结构的正确构建与异步陷阱

深入Pin的核心机制,揭示自引用结构如何在堆上安全存在,以及为什么异步块会悄悄引入Pin。

生命周期变体(Variance)实战:协变、逆变与不变的本质

不再畏惧编译器错误!理解函数签名中生命周期的协变/逆变规则,解开Fn trait与结构体泛型的神秘关系。

宏的透明性与卫生性:构建不会意外捕获标识符的声明宏

深入Rust宏卫生系统,揭示$crate、局部变量隔离与自定义上下文的秘密,避免宏污染调用者命名空间。

全局分配器定制:从线程局部缓存到无锁内存池

超越默认alloc,亲手实现一个全局分配器,理解内存布局、对齐和dealloc的安全契约。

析构顺序的编译期之舞:Drop Check与提前释放的安全性

揭示Rust如何通过dropck分析保证struct字段按声明顺序析构,以及如何用ManuallyDrop干预这一规则。

Unsafe Trait的生命周期契约:实现Send/Sync的非标准模式

探索如何为自定义类型安全地实现Send和Sync,特别是当类型包含内部可变性时,如何利用PhantomData标记正确的并发语义。

FFI生命周期桥梁:在C与Rust之间安全传递借用和所有权

超越简单的extern "C",掌握如何将Rust的生命周期模型映射到C的原始指针世界,防止内存泄漏和悬垂指针。

Never类型!的进阶用法:完美错误处理与类型级控制流

探索!类型在Result、match和异步代码中的妙用,实现无法到达的分支和编译期可证伪性。

泛型关联类型(GAT)的范式革命:表达高阶类型关系

GAT允许关联类型带有泛型参数,本教程教你如何用GAT实现迭代器工厂、借用模式抽象和类型级别计算。

零成本抽象的所有权错觉

剖析Rust中迭代器、闭包等零成本抽象在所有权系统中的真实开销与隐藏规则

PhantomData与型变:隐藏的类型兵器

揭示PhantomData在型变、生命周期标记、drop检查中的真实作用,超越官方文档示例

Pin: 不只是自引用——手动投影的艺术

构建自引用结构时Pin与unsafe的手动投影技术,以及如何安全地暴露字段

Negative impl与Auto trait的隐式逻辑

探索Rust nightly中的negative trait impl如何影响auto trait派生和并发安全

超越整数:const泛型中的enum与bool魔改

利用const泛型和min_const_generics实现基于enum状态和布尔值的编译期分发

HRTB生命周期异常:for<'a>的真实语义

深入HRTB(高阶trait约束)在闭包、函数指针和动态分发中的隐藏生命周期绑定规则

内联汇编的内存模型与编译器屏障

在Rust中使用asm!宏时如何正确控制内存顺序、避免编译器优化破坏并发逻辑

TAIT(Type alias impl Trait)的伪装与解构

稳定版中已经存在的impl Trait在类型别名中的局限,以及nightly TAIT如何改变抽象模式

Never类型!与穷尽模式匹配的隐藏力量

探索!类型在分歧函数、不变量编码和类型级空洞中的高级用法

派生宏实战:TokenStream解析与属性战争

从零构建一个派生宏,处理复杂的属性参数和字段级别标记,包括syn/quote深度使用

🚀 升级VIP
解锁全部课程+AI助手

🏆 学习排行

加载中...

📊 统计

📖 122 篇
0 完成
🔥 0