1. Rust 语言入门 Introduction to Rust
  2. 第一部分: 语言基础
  3. 1. 配置开发环境
    ❱
    1. 1.1. 使用 rustup 配置 Rust 工具链
    2. 1.2. 第一个 rust 程序 hello world
    3. 1.3. RustRover IDE
    4. 1.4. VS Code
  4. 2. 基础数据类型 Primitives
    ❱
    1. 2.1. 整数类型 Integers
    2. 2.2. 浮点类型 Floating Point Numbers
    3. 2.3. 布尔类型 Boolean
    4. 2.4. 字符 char
    5. 2.5. 数组 array
    6. 2.6. 元组 tuple
    7. 2.7. 切片 slice
    8. 2.8. 字符串 str
    9. 2.9. 字符串常量
    10. 2.10. 指针 pointer
    11. 2.11. 类型别名 Type Alias
    12. 2.12. 类型转换 Casting
  5. 3. 表达式 Expressions
    ❱
    1. 3.1. 变量 Variables
    2. 3.2. 条件判断表达式 if 与 if let
    3. 3.3. 匹配表达式 match
    4. 3.4. 返回表达式 return
    5. 3.5. 循环表达式 loop
    6. 3.6. 下划线表达式 Underscore
    7. 3.7. 代码块表达式 Block
    8. 3.8. 操作符表达式 Operators
    9. 3.9. 其它表达式
  6. 4. 模块 Modules
    ❱
    1. 4.1. Crate 的组成部分
    2. 4.2. 模块 Modules
    3. 4.3. 文件系统结构 Filesystem Hierarchy
    4. 4.4. 路径 Path
    5. 4.5. 可见性 Visibility
    6. 4.6. 预先导入 Preludes
  7. 5. 所有权 Ownership
    ❱
    1. 5.1. 所有权 Ownership
    2. 5.2. C++ 中的移动语义 Move Semantics
    3. 5.3. 转移所有权 Move Ownership
    4. 5.4. 不需要转移所有权 Clone 与 Copy traits
    5. 5.5. 使用 Rc 与 Arc 共享所有权
    6. 5.6. 引用 References
  8. 6. 引用 References
    ❱
    1. 6.1. 引用的操作
    2. 6.2. 引用的内存结构
    3. 6.3. 引用的安全性 Reference Safety
    4. 6.4. 共享引用 Shared Reference
    5. 6.5. 可变更引用 Mutable References
    6. 6.6. reborrow
    7. 6.7. 借用检查器 Borrow Checker
  9. 7. 生命周期 Lifetimes
    ❱
    1. 7.1. 标注生命周期 Lifetime marker
    2. 7.2. 函数中的生命周期
    3. 7.3. 结构体生命周期
    4. 7.4. 泛型生命周期
    5. 7.5. 省去标注生命周期 Lifetime Elision
    6. 7.6. 常量 Const
    7. 7.7. 静态变量 Static
    8. 7.8. static 静态生命周期
    9. 7.9. Non-lexical lifetimes NLL
  10. 第二部分: 自定义类型
  11. 8. 结构体 Structs
    ❱
    1. 8.1. 定义结构体 Definition
    2. 8.2. 定义方法 Implementation
    3. 8.3. 调用结构体的方法
    4. 8.4. New Type
    5. 8.5. 内存布局 Memory Layout
  12. 9. 枚举 Enums
    ❱
    1. 9.1. 内存布局 Memory Layout
    2. 9.2. 定义方法 impl
    3. 9.3. Option
    4. 9.4. Result
  13. 10. 联合体 Unions
    ❱
    1. 10.1. 定义联合体
    2. 10.2. 模式匹配
    3. 10.3. 内存布局 Memory Layout
    4. 10.4. 泛型联合体
  14. 11. 接口 Trait
    ❱
    1. 11.1. 使用 Trait
    2. 11.2. 定义和实现 Trait
    3. 11.3. Derive: 自动继承常见的 trait
    4. 11.4. 关联的项目 Associated Items
    5. 11.5. Trait Objects
    6. 11.6. 静态派发与动态派发 Static Dispatch and Dynamic Dispatch
    7. 11.7. 隐藏名称 Name Hiding
  15. 12. 函数与闭包 Functions and Closures
    ❱
    1. 12.1. 函数 function
    2. 12.2. 函数属性
    3. 12.3. 重载 Overloading
    4. 12.4. 函数传递参数的几种方法
    5. 12.5. 闭包 Closure
    6. 12.6. 闭包的内存布局
    7. 12.7. Fn, FnMut 与 FnOnce
    8. 12.8. 回调函数
    9. 12.9. 函数声名示例
  16. 13. 泛型 Generics
    ❱
    1. 13.1. 泛型函数 Generic Functions
    2. 13.2. 泛型结构体 Generic Structs
    3. 13.3. 泛型 Traits Generic Traits
    4. 13.4. 常量泛型参数 Const Generics
  17. 14. 模式匹配 Pattern Matching
    ❱
    1. 14.1. 模式 Patterns
    2. 14.2. 匹配值 Matching Values
    3. 14.3. 使用条件匹配 Match Guards
    4. 14.4. 解构 Destructing
    5. 14.5. let 控制流
    6. 14.6. matches 宏
  18. 第三部分: 标准库
  19. 15. 操作符重载 Operator Overloading
    ❱
    1. 15.1. 算术与比特位操作符 Arithmetic and bitwise operators
    2. 15.2. Range
    3. 15.3. 索引 Index 与 IndexMut
    4. 15.4. 相等与比较 Eq and Ord
  20. 16. 迭代器 Iterators
    ❱
    1. 16.1. Iterator 与 IntoIterator
    2. 16.2. ExactSizeIterator
    3. 16.3. DoubleEndedIterator
    4. 16.4. FromIterator
    5. 16.5. Extend
    6. 16.6. 求和 Sum
    7. 16.7. 乘积 Product
    8. 16.8. 迭代器的适配器 Adapters
    9. 16.9. 使用 Iterator
  21. 17. 常用的 Traits
    ❱
    1. 17.1. Drop
    2. 17.2. Default
    3. 17.3. Write
    4. 17.4. Debug 与 Display
    5. 17.5. FromStr 与 ToString
    6. 17.6. Clone 与 Copy
    7. 17.7. ToOwned
    8. 17.8. From 与 Into
    9. 17.9. TryFrom 与 TryInto
    10. 17.10. AsRef 与 AsMut
    11. 17.11. Deref 与 DerefMut
    12. 17.12. Borrow 与 BorrowMut
    13. 17.13. Send 与 Sync
    14. 17.14. Sized
    15. 17.15. Hash 与 Hasher
    16. 17.16. 反射 Any
  22. 18. 容器类 Collections
    ❱
    1. 18.1. 数组 Vec
      ❱
      1. 18.1.1. 使用 Vec
      2. 18.1.2. 结构体定义与内存布局
      3. 18.1.3. 管理容量
      4. 18.1.4. 迭代器
    2. 18.2. 双端队列 VecDeque
      ❱
      1. 18.2.1. 使用 VecDeque
      2. 18.2.2. 结构定义与内存布局
      3. 18.2.3. 管理容量
      4. 18.2.4. 迭代器
      5. 18.2.5. 与 Vec 比较
    3. 18.3. 双链表 LinkedList
    4. 18.4. 优先级队表 BinaryHeap
    5. 18.5. HashMap & HashSet
    6. 18.6. BTreeMap & BTreeSet
  23. 19. 字符串 String
    ❱
    1. 19.1. Unicode 编码
    2. 19.2. UTF-8 编码
    3. 19.3. String 类
    4. 19.4. 字符串格式化
    5. 19.5. 字符串内存布局
    6. 19.6. 其它类型的字符串
  24. 20. 输入输出 IO
  25. 第四部分: 内存管理
  26. 21. 内存管理基础
    ❱
    1. 21.1. 进程内存结构 Segments
    2. 21.2. RAII
    3. 21.3. Drop 对象的时机
  27. 22. std::ptr 模块
    ❱
    1. 22.1. read() 与 write() 函数
    2. 22.2. addr_of!() 与 addr_of_mut!() 宏
    3. 22.3. eq() 与 addr_eq() 函数
    4. 22.4. swap() 与 replace() 函数
    5. 22.5. swap_nonoverlapping() 函数
    6. 22.6. copy() 与 copy_nonoverlapping() 函数
    7. 22.7. drop_in_place() 函数
    8. 22.8. slice_from_raw_parts() 函数
    9. 22.9. null() 与 null_mut() 函数
    10. 22.10. NonNull 类
    11. 22.11. Unique 类
  28. 23. std::mem 模块
    ❱
    1. 23.1. offset_of!() 宏
    2. 23.2. size_of() 与 size_of_val() 函数
    3. 23.3. align_of() 与 align_of_val() 函数
    4. 23.4. zeroed() 函数
    5. 23.5. MaybeUninit 类
    6. 23.6. ManuallyDrop 类与 forget() 函数
    7. 23.7. replace() 函数
    8. 23.8. swap() 函数
    9. 23.9. take() 函数
    10. 23.10. transmute() 函数
  29. 24. 智能指针 Smart Pointers
    ❱
    1. 24.1. 原始指针 Raw pointer
    2. 24.2. 胖指针 Fat pointer
    3. 24.3. 使用 Box 分配堆内存
      ❱
      1. 24.3.1. Box<T> 类
      2. 24.3.2. Box::leak() 函数
      3. 24.3.3. Box<[T]> 类
      4. 24.3.4. Box<dyn Trait> 类
      5. 24.3.5. Box<dyn Any> 实现类型反射
      6. 24.3.6. 探寻 Box<T> 内部
    4. 24.4. Rc 在线程内的引用计数
      ❱
      1. 24.4.1. Rc 的内存布局
      2. 24.4.2. 使用 Weak 解决循环引用问题
      3. 24.4.3. 内部可变性: Rc<Refcell> 的使用
      4. 24.4.4. 对比 C++ 里的 shared_from_this
      5. 24.4.5. Rc<[T]> 切片
    5. 24.5. Cell 与 RefCell
      ❱
      1. 24.5.1. 内部可变性 Interior Mutability
      2. 24.5.2. Cell 类
      3. 24.5.3. Cell 的内存布局
      4. 24.5.4. RefCell 类
      5. 24.5.5. RefCell 的内存布局
      6. 24.5.6. OnceCell 类
      7. 24.5.7. LazyCell 类
      8. 24.5.8. UnsafeCell 类
    6. 24.6. 写时复制 borrow::Cow 与 borrow::ToOwned
  30. 25. 内存管理
    ❱
    1. 25.1. 内存模型 Memory Model
    2. 25.2. marker::PhantomData 类
    3. 25.3. 固定内存 pin::Pin 以及 marker::Unpin
    4. 25.4. 初始化内存 Initialize Memory
    5. 25.5. 内存对齐 Memory Alignment
    6. 25.6. 内存布局 Memory Layout
    7. 25.7. 空类 Zero Sized Types
    8. 25.8. Sanitizers
    9. 25.9. 使用 valgrind 检查内存泄露
    10. 25.10. Miri
  31. 26. 内存分配器
    ❱
    1. 26.1. 内存分配器关系图
    2. 26.2. 内存分配器的基本接口 GlobalAlloc
    3. 26.3. Allocator Trait
    4. 26.4. 标准库中的内存分配器
    5. 26.5. 自定义内存分配器
    6. 26.6. Arena 分配器
    7. 26.7. jemalloc 库
  32. 第五部分: 并发编程
  33. 27. Linux 下的线程基础
    ❱
    1. 27.1. 线程的创建与终止
    2. 27.2. 取消线程 Thread Cancellation
    3. 27.3. 线程相关的更多信息
    4. 27.4. 线程同步 Thread Synchronization
      ❱
      1. 27.4.1. 互斥锁 Mutex
      2. 27.4.2. 条件变量 Condition Variable
      3. 27.4.3. 读写锁 RwLock
      4. 27.4.4. 自旋锁 Spinlock
      5. 27.4.5. 内存屏障 Barrier
      6. 27.4.6. 信号量 Semaphore
    5. 27.5. Per-thread Storage
      ❱
      1. 27.5.1. One-time initialization
      2. 27.5.2. Thread-Specific Data
      3. 27.5.3. 线程本地存储 Thread-Local Storage
      4. 27.5.4. 线程本地存储 TLS 是如何实现的
  34. 28. Linux 下的进程间通信 IPC
    ❱
    1. 28.1. 进程间通信概述 Overview
    2. 28.2. 信号 Signal
    3. 28.3. 文件锁 File Locking
    4. 28.4. 管道 Pipe
    5. 28.5. FIFO
    6. 28.6. eventfd
    7. 28.7. Unix Domain Socket
    8. 28.8. System V IPC
      ❱
      1. 28.8.1. System V Message Queue
      2. 28.8.2. System V Semaphore
      3. 28.8.3. System V Shared Memory
    9. 28.9. 内存映射 Memory Map
    10. 28.10. POSIX IPC
      ❱
      1. 28.10.1. POSIX Message Queue
      2. 28.10.2. POSIX Semaphore
      3. 28.10.3. POSIX Shared Memory
  35. 29. 并发编程基础 Concurrency Basic
    ❱
    1. 29.1. 并发编程模型 concurrency models
    2. 29.2. 线程 Threads
    3. 29.3. 线程本地存储 Thread Local Storage
    4. 29.4. 多线程与线程池
    5. 29.5. rayon 线程池库
    6. 29.6. Send 与 Sync trait
    7. 29.7. 基于共享内存的并发带来的不确定性
  36. 30. 消息传递 Message passing
    ❱
    1. 30.1. 使用 Channel 传递消息
    2. 30.2. Channel 是如何实现的
  37. 31. 基于锁的并发 Lock-based Concurrency
    ❱
    1. 31.1. 锁相关的 API
    2. 31.2. 自旋锁 Spinlock
    3. 31.3. 互斥琐 Mutex 与 MutexGuard
    4. 31.4. 读写锁 RwLock 与 RwLockGuards
    5. 31.5. 可重入锁 ReentrantLock
    6. 31.6. 条件变量 Condition Variable
    7. 31.7. Barrier
    8. 31.8. Once
    9. 31.9. OnceLock
    10. 31.10. LazyLock
    11. 31.11. 信号量 Semaphore
    12. 31.12. 全局变量 Global Variables
    13. 31.13. Arc 跨线程的引用计数
      ❱
      1. 31.13.1. Arc 的内存布局
      2. 31.13.2. 使用 Arc<Mutex>
      3. 31.13.3. 使用 Arc<(Mutex, CondVar)>
      4. 31.13.4. 使用 Arc<RwLock>
      5. 31.13.5. 使用 Arc<AtomicUsize>
      6. 31.13.6. 使用 Weak 解决循环引用的问题
  38. 32. 无锁并发 Lock-free Concurrency
  39. 33. 原子操作内部 Atomic Internals
    ❱
    1. 33.1. 原子操作 Atomic
    2. 33.2. 内存顺序 Memory Order
    3. 33.3. 在用户空间实现的快速锁 futex
    4. 33.4. 重新实现自旋锁 Spinlock
    5. 33.5. 重新实现互斥锁 Mutex
    6. 33.6. 重新实现读写锁 RwLock
    7. 33.7. 重新实现条件变量 CondVar
    8. 33.8. 重新实现 Arc
    9. 33.9. 重新实现 Channel
    10. 33.10. crossbeam 库
    11. 33.11. parking_lot 库
    12. 33.12. qcell 库
  40. 34. 并行计算 Parallel Computing
    ❱
    1. 34.1. SIMD 基础
    2. 34.2. SIMD 实践
    3. 34.3. OpenMP
    4. 34.4. MPI
    5. 34.5. CUDA
  41. 第六部分: 异步编程
  42. 35. 异步 async/await
    ❱
    1. 35.1. 第一个 async 程序
    2. 35.2. 剖析 async 程序
    3. 35.3. 理解 Futures 与 Tasks
    4. 35.4. 理解 async/await
    5. 35.5. coroutine
    6. 35.6. 生命周期与内存固定 Lifetimes and Pinning
    7. 35.7. Async Drop
    8. 35.8. 异步迭代器 async iterator
  43. 36. futures 库
    ❱
    1. 36.1. 任务的执行者 Executor
    2. 36.2. 管理任务 Tasks
    3. 36.3. 一次执行多个 Futures
    4. 36.4. 使用 channel 传递信息
    5. 36.5. 异步 IO
    6. 36.6. Stream 与迭代器
    7. 36.7. 同步 Synchronization
  44. 37. tokio 库
    ❱
    1. 37.1. mio 库
    2. 37.2. 异步IO io-uring
    3. 37.3. 如何调试 debug
    4. 37.4. Actor Model 模型
  45. 38. 其它异步运行时 Runtime
    ❱
    1. 38.1. async-std
    2. 38.2. smol
    3. 38.3. Glommio
    4. 38.4. 手动实现一个运行时
  46. 第七部分: 工程实践
  47. 39. 错误处理 Error handling
    ❱
    1. 39.1. Panic
    2. 39.2. Panic Hook
    3. 39.3. Error trait
    4. 39.4. 自定义错误类型
    5. 39.5. thiserror 库
    6. 39.6. anyhow 库
  48. 40. 日志与追踪 Logging && Tracing
    ❱
    1. 40.1. 打印日志到终端
    2. 40.2. 保存日志到文件
    3. 40.3. 保存日志到系统
    4. 40.4. 结构化日志
    5. 40.5. Metrics
    6. 40.6. 追踪 Tracing
    7. 40.7. 遥测 Telemetry
    8. 40.8. Sentry
    9. 40.9. GlitchTip
    10. 40.10. 崩溃报告 Breakpad
  49. 41. 测试 Test
    ❱
    1. 41.1. 文档测试 Doc Test
    2. 41.2. 单元测试 Unit Test
    3. 41.3. 集成测试 Integrated Test
    4. 41.4. 代码覆盖率 Code Coverage
  50. 42. 运行时 Runtime
    ❱
    1. 42.1. main() 函数
    2. 42.2. 调用 main() 函数之前发生了什么
    3. 42.3. unwind
    4. 42.4. 运行时检查
  51. 43. 调试与性能优化 Debug & Profiling
    ❱
    1. 43.1. 调试模式 Debug
    2. 43.2. GDB
    3. 43.3. LLDB
    4. 43.4. 性能测试 Benchmark
      ❱
      1. 43.4.1. divan 库
      2. 43.4.2. criterian 库
    5. 43.5. perf-tools
    6. 43.6. 加快编译速度
    7. 43.7. 优化二进制文件大小
    8. 43.8. MIR
  52. 44. 汇编 Assembly
    ❱
    1. 44.1. 内联汇编 Inline Assembly
  53. 45. 宏 Macro
    ❱
    1. 45.1. 常用的宏 Common Macros
    2. 45.2. 声明宏 Declarative Macro
    3. 45.3. 过程宏 Procedure Macro
      ❱
      1. 45.3.1. 函数式宏 Function-like Macro
      2. 45.3.2. 继承宏 Derive Macro
      3. 45.3.3. 属性宏 Attribute Macro
    4. 45.4. syn 库
    5. 45.5. quote 库
  54. 46. 不安全的代码 Unsafe code
    ❱
    1. 46.1. unsafe 块表达式
    2. 46.2. unsafe 的函数
    3. 46.3. unsafe trait
    4. 46.4. 访问原始指针 Dereference raw pointers
    5. 46.5. Union
    6. 46.6. 访问静态变量
  55. 47. 调用外部接口接口 FFI
    ❱
    1. 47.1. 声明外部函数
    2. 47.2. C ffi
    3. 47.3. 与C语言兼容的基础数据类型
    4. 47.4. 与C语言兼容的结构体
    5. 47.5. C 语言格式的字符串
    6. 47.6. 声明外部函数以及变量
    7. 47.7. 使用外部库中的函数
    8. 47.8. 使用 CC 编译C代码并链接到内部
    9. 47.9. 自动生成语言绑定
  56. 48. 库 Crates
    ❱
    1. 48.1. 文档与注释
    2. 48.2. 指定使用特定的工具链 Custom Toolchain
    3. 48.3. Cargo 基础
    4. 48.4. Cargo 配置
    5. 48.5. 引用外部库
    6. 48.6. 构建脚本 build.rs
    7. 48.7. 工具
    8. 48.8. 目录结构
    9. 48.9. 属性 Attributes
    10. 48.10. 特性 Features
    11. 48.11. 条件编译 Conditional compilation
    12. 48.12. 跨平台 Cross Platform
    13. 48.13. 交叉编译 Cross Compilation
    14. 48.14. 静态编译 Static Compilation
    15. 48.15. 设置 no_std
  57. 49. 设计模式
    ❱
    1. 49.1. 创建型 Creational
      ❱
      1. 49.1.1. 简单工厂模式 Simple factory
      2. 49.1.2. 工厂方法模式 Factory method
      3. 49.1.3. 抽象工厂模式 Abstract factory
      4. 49.1.4. 建造者模式 Builder
      5. 49.1.5. 原型模式 Prototype
      6. 49.1.6. 单例模式 Singleton
    2. 49.2. 结构型 Structural
      ❱
      1. 49.2.1. 适配器模式 Adapter
      2. 49.2.2. 桥梁模式 Bridge
      3. 49.2.3. 组合模式 Composite
      4. 49.2.4. 装饰器模式 Decorator
      5. 49.2.5. 门面模式 Facade
      6. 49.2.6. 享元模式 Flyweight
      7. 49.2.7. 代理模式 Proxy
    3. 49.3. 行为型 Behavioral
      ❱
      1. 49.3.1. 责任链模式 Chain of Responsibility
      2. 49.3.2. 命令行模式 Command
      3. 49.3.3. 迭代器模式 Iterator
      4. 49.3.4. 中介者模式 Mediator
      5. 49.3.5. 备忘录模式 Memento
      6. 49.3.6. 观察者模式 Observer
      7. 49.3.7. 访问者模式 Visitor
      8. 49.3.8. 策略模式 Strategy
      9. 49.3.9. 装态模式 State
      10. 49.3.10. 模板方法模式 Template Method
  58. 第八部分: Rust语言的生态
  59. 50. 数据结构与算法 Algorithms
  60. 51. 新特性 Unstable Features
    ❱
    1. 51.1. portable simd
  61. 52. 第三方库 crates.io
    ❱
    1. 52.1. dashmap 库: 并发的 HashMap 实现
    2. 52.2. libloading 库
    3. 52.3. 数据序列化 serde
    4. 52.4. smallvec
    5. 52.5. 时间 Time
  62. 53. 网络编程 Network Programming
    ❱
    1. 53.1. HTTP 请求: reqwest 库
    2. 53.2. Web 服务: hyper 库
    3. 53.3. 基于 Actor 模型实现的 Web 服务: actix-web 库
    4. 53.4. websocket 库: tokio-tungstenite
    5. 53.5. openssl 的原生实现: rustls 库
    6. 53.6. QUIC 协议: quinn 库
    7. 53.7. gRPC 服务: tonic 库
  63. 54. WebAssembly
    ❱
    1. 54.1. WebAssembly 系统接口 wasi
    2. 54.2. 基于 LLVM 的编译器 emscripten
    3. 54.3. 编译器与工具链 binaryen
    4. 54.4. wasmtime 运行时
    5. 54.5. wasmer 运行时
    6. 54.6. WasmEdge 运行时
    7. 54.7. 反编译与调试
  64. 55. web 前端开发
    ❱
    1. 55.1. web-sys 库
    2. 55.2. wasm-bindgen 库
    3. 55.3. wasm-pack 工具
    4. 55.4. trunk 工具
    5. 55.5. yew 库
    6. 55.6. wgpu 库
    7. 55.7. zu 库
    8. 55.8. 其它工具
  65. 56. 客户端程序 GUI
    ❱
    1. 56.1. 使用 tauri 替代 electron
    2. 56.2. gtk
    3. 56.3. egui
  66. 参考资料

Rust 语言入门 Introduction to Rust

标注生命周期

参考

  • Crust of Rust: Lifetime Annotations