---
title: "Rust 语言技术"
date: 2018-12-29
lastmod: 2020-01-05
weight: 1
type: docs
icon: #
description: "学习路线图"
# search related keywords
---


![高校俱乐部](https://codechina.csdn.net/codechina/operation-work/uploads/53b24f5f44d3c851890b1789ed501001/%E9%AB%98%E6%A0%A1%E4%BF%B1%E4%B9%90%E9%83%A8320.jpg)

<p style="text-align:center;font-weight:bold;">关注“高校俱乐部”微信公众号，快人一步获取高清全套技术路线图</p>

<br>


{{< embed-pdf-view url="/images/rust.pdf" >}}

### 初阶

- 基础语法
  - 常量、变量、绑定
    - let关键字
    - mut修饰符
    - const修饰符
  - 语句与表达式
    - 语句和表达式的区别
    - 行末的分号
  - 循环语句
    - loop
    - while
    - for
    - break
    - loop label
  - 条件判断语句
    - if
    - else
    - else if
  - 基本运算符
    - 算术运算符
    - 逻辑运算符
    - 位移运算符
  - 函数与闭包
    - fn关键字
    - 函数参数的写法
    - 函数的返回值 
    - 闭包
    - 闭包的参数和返回值
  - match表达式
    - match的语法和分支
    - 默认分支
- 数据类型
  - 基础数据类型
    - 数字类型
      - 有符号数类型
        - i8/i16/i32/i64/i128/isize
      - 无符号数类型
        - u8/u16/u32/u64/u128/usize
      - 浮点数类型
        - f32/f64
    - 布尔类型
      - bool
    - 字符类型
      - char
    - 数组类型
      - []
    - range类型
      - range()
    - slice类型
      - 内存切片
    - str类型
      - 静态字符串
    - String类型
      - 动态字符串
  - 复合数据类型
    - 元组()
    - 结构体struct
    - 枚举enum
    - union
  - 集合类型
    - Vector
    - HashMap
    - HashSet
- 模式匹配
  - match基本形式
  - match+enum实现分支处理
  - if let
  - while let
  - 函数参数中的模式匹配
- module组织
  - 多模块文件的组织
  - 多模块文件的引入和路径寻址
  - pub
    - 模块供外部访问的部分的导出修饰符
- cargo包管理系统 
  - cargo的基本使用
  - 外部crate的引入和使用
- 打印、调试与输入输出 
  - println!
  - debug!
  - std::io
  - io::stdin() 
  - io::stdout() 
- 文件操作
  - std::fs
  - 文件的增删改查
  - 目录的操作
- 注释
  - 行注释
  - 块注释
  - 文档型注释
  - 文档型注释中的markdown支持
  - 文档型注释中的代码测试支持

### 中阶

- 错误处理
  - Rust中错误处理的基本方法
  - Result与Option
  - match表达式用于错误处理
  - 用于错误处理的?号
  - 错误抛出的路径和处理的时机
- trait特征
  - trait的基本功能
  - 将trait实现在类型上
  - 孤儿规则 
- 运算符的重载
  - 支持重载的运算符及其对应的trait
- 泛型
  - 泛型的基本概念
  - Rust中泛型的形式
  - 多泛型
  - PhantomData
  - 静态分发与动态分发
- 引用与指针
  - &、Box
- 智能指针
  - Cow
  - Rc、Arc
  - Weak
  - Cell、RefCell
- 更多类型
  - never类型
  - BtreeMap
  - BtreeSet
  - VecDeque
  - LinkedList
  - BinaryHeap
- 类型转换
  - as
  - Deref
  - From和Into
- 所有权系统 
  - 所有权的概念
  - 所有权的创建和转移
  - 所有权在Rust中的重要意义
- Borrow Checker
  - 借用检查器的概念
  - 借用检查器的运行原理
  - 借用的操作和数据的访问
  - 不可变借用和可变借用
  - 借用的传递
- Lifetime
  - 生命周期的概念
  - Rust中生命周期的表示
  - 生命周期的分析方法
- 迭代器
  - 迭代器的基本概念
  - 迭代器的优势
  - Rust标准库中常见的迭代器类型和使用方法
  - 实现自己的迭代器
- 标准库中的常用trait
  - Display
  - Clone
  - Debug
  - Eq
  - PartialEq
- 多线程开发
  - Rust多线程的语法
  - 使用channel在多线程中交互数据
  - 多线程中的共享数据问题
- async异步开发
  - 同步和异步的概念
  - Future的基本概念
  - async/await关键字的使用
  - tokio runtime的基本使用
    - tokio
  - task任务操作
- Rust设计模式
  - 构建器模式
  - newtype模式
- 宏的使用
  - 声明宏
    - 过程宏
    - 属性宏
    - 类函数宏
  - 派生宏
- 网络编程
  - tcp编程
    - tokio::net的使用
  - udp编程
    - tokio::net的使用
  - http编程
    - hyper库的使用
- cargo工程配置
  - cargo各种参数的作用和配置
  - 开发中大型项目的特性支持


### 高阶

- 原始指针
  - 原始指针
    - `*const`、`*mut`
  - 原始指针与其它引用和指针类型的转换
  - 原始指针在标准库中出现的使用函数
- unsafe Rust
  - unsafe关键字
  - safe Rust与unsafe Rust
  - unsafe Rust与C的安全性区别
  - unsafe Rust的意义
- 高级trait
  - 关联类型
  - 关联常量
  - trait中的泛型
- 高级lifetime
  - 多生命周期
  - 生命周期的依赖
- 函数式编程风格
  - 标准库中的一套方法
    - map、fold、filter、then等
  - 链式写法
  - 函数式编程中的副作用
- Rust设计模式（扩展）
  - 工厂模式
  - OOP模式
  - 状态机模式
- Rust FFI开发
  - 从C库中导入函数
  - 使用Rust为其它语言写函数库
  - Rust与C++交互开发
  - Rust与动态语言交互开发
- 安全并发
  - Send与Sync
  - 锁的使用分析
  - 无锁数据结构
  - 高性能并发编程
    - rayon、crossbeam库等
- 内存布局
  - Rust中数据结构的内存布局
  - Rust内存布局与C的区别
- 宏开发
  - 自己动手写declare macro
  - 自动动手写procedure macro
- 元编程
  - build.rs构建期编程
  - 使用过程宏实现编译期代码操作
  - 类型反射相关
    - Any、downcast
- 解析器开发
  - 解析器的重要意义
  - Rust为何适合用来写解析器
  - nom解析器快速开发
    - nom
  - 序列化库
    - serde
- 异步编程Poll模式开发
  - 深刻理解Future
    - Reactor、Waker、Executor
  - 学习Future的Poll状态机开发模式
    - Context
  - Pin
    - Pin相关知识点
  - Poll开发模式需要注意的一些点
- Rust与Wasm开发
  - WebAssembly介绍 
  - Rust为何适合用来开发wasm应用
  - 其它语言开发wasm应用的对比
  - Wasm-bindgen