基础概念
Rust安装与环境配置
安装rustup、cargo、rust-analyzer与工具链,为后续全部练习搭建可运行环境
建议预留 60 分钟
学习目标
- 安装Rust工具链并配置编辑器
- 掌握cargo build/run基础命令
关键概念
- rustup
- cargo
- rust-analyzer
为什么学习
- 需要一次性配置好能编译运行的环境,后续每个练习都依赖此基础
如何检验理解
- 能在终端运行cargo --version并成功用cargo new创建并运行hello项目
基础概念
变量、常量与数据类型
理解let绑定、不可变性与基本标量/复合类型,作为理解TypeScript差异的起点
建议预留 60 分钟
学习目标
- 掌握变量绑定与基本类型
- 理解mut与类型推断
关键概念
- let绑定
- 不可变性
- 标量与复合类型
为什么学习
- 是后续所有权理解的基础,靠日常编写即可掌握
如何检验理解
- 能定义带类型标注的变量并解释为何默认不可变
基础概念
函数与控制流
函数定义、返回值、if/loop/match等控制结构,Rust中表达式优先的风格
建议预留 45 分钟
学习目标
- 编写函数与表达式
- 使用match与loop控制流
关键概念
- 表达式
- match
- 控制流
为什么学习
- 后端逻辑的基本载体,项目每个handler都用到
如何检验理解
- 能编写带match分支与模式绑定返回值的函数
核心技能
所有权(Ownership)机制
所有权规则、移动与拷贝语义,Rust安全核心,也决定ts开发者对内存思考方式的转变
建议预留 90 分钟
学习目标
- 理解所有权三规则
- 识别移动与拷贝场景
关键概念
- 所有权
- 移动语义
- 拷贝语义
- 作用域
为什么学习
- Rust区别于TS的核心心智模型,写任何代码都必须理解,否则无法通过编译器
如何检验理解
- 能解释一次移动与拷贝发生的场景并预判编译错误
基础概念
Slice与String深入
&str与String区别、字节与UTF-8处理,后端处理HTTP请求体必需
建议预留 45 分钟
学习目标
- 区分&str与String
- 处理UTF-8字节
关键概念
- &str
- String
- UTF-8
为什么学习
- HTTP数据与SQL都是字符串,理解&str/String差异避免常见坑
如何检验理解
- 能解释String vs &str并正确做切片操作
核心技能
借用(Borrowing)与引用
&引用、可变/不可变借用规则,是与所有权配合的安全访问机制
建议预留 90 分钟
学习目标
- 理解借用规则
- 使用&mut与不可变借用
关键概念
- 引用
- 借用规则
- 可变借用
为什么学习
- Axum handler大量用引用与借用,理解可变性规则是编译通过的必备
如何检验理解
- 能正确写出单活跃可变借用并修复借用冲突编译错误
核心技能
生命周期(Lifetime)概念
生命周期注解与省略规则,理解借用存活范围
建议预留 90 分钟
学习目标
- 理解生命周期标注
- 应对借用冲突
关键概念
- 生命周期注解
- 省略规则
- 借用存活
为什么学习
- 解决借用冲突和结构体持有引用的关键,虽多数时代码由编译器推导仍需理解
如何检验理解
- 能解释生命周期省略并修复需要显式标注的场景
基础概念
结构体与枚举
定义struct/enum、方法method、Option与Result基础,是建模用户与请求的基础形状
建议预留 75 分钟
学习目标
- 定义struct与enum
- 实现方法method
关键概念
- struct
- enum
- impl与方法
为什么学习
- 认证项目中的User模型、请求/响应结构都用它定义
如何检验理解
- 能为用户实体定义struct并为其实现方法
基础概念
标准库集合类型
Vector、HashMap、HashSet常用API,存储与检索用户数据
建议预留 60 分钟
学习目标
- 使用Vec与HashMap
- 理解迭代与借用结合
关键概念
- Vec
- HashMap
- HashSet
为什么学习
- 业务中的列表与键值处理常用,API简单按需查阅
如何检验理解
- 能用HashMap与Vec完成常用增删查操作
核心技能
模式匹配与Option/Result
深入match、unwrap/问号运算符与错误传播基础
建议预留 60 分钟
学习目标
- 熟练使用match
- 用?运算符处理Result
关键概念
- 模式匹配
- Option
- Result
- ?运算符
为什么学习
- 数据库与请求都返回Result/Option,正确处理它们决定API健壮性
如何检验理解
- 能用?运算符在多步Result链中简洁传播错误
核心技能
模块系统与cargo工程管理
mod组织、use导入、crate结构,管理认证项目的多文件组织
建议预留 60 分钟
学习目标
- 组织mod
- 管理cargo依赖
关键概念
- mod
- crate
- use与pub
为什么学习
- 把路由/handler/db/接口拆成模块是中型项目可维护的基础
如何检验理解
- 能把项目拆分为多个mod并在crate间正确导入
核心技能
错误处理(Error Handling)
自定义错误类型与anyhow/thiserror,后端handler返回结构化错误的前提
建议预留 60 分钟
学习目标
- 定义错误类型
- 用anyhow/thiserror管理错误
- 错误转HTTP响应
关键概念
- anyhow
- thiserror
- 错误组合子
- IntoResponse
为什么学习
- 认证API需把内部错误映射为HTTP状态码,此能力是Axum错误响应的核心
如何检验理解
- 能自定义错误枚举并实现IntoResponse把错误转为HTTP响应
核心技能
泛型与trait系统
泛型、trait定义/实现、trait对象,理解Axum和SQLx的抽象接口
建议预留 90 分钟
学习目标
- 实现trait
- 理解泛型约束
- 认识trait对象
关键概念
- trait
- 泛型约束
- trait对象
- impl Trait
为什么学习
- Axum提取器、SQLx查询、tower中间件都基于trait,理解它才能正确组合
如何检验理解
- 能解释FromRequest等trait如何驱动Axum扩展
补充知识
宏(Macro)基础
声明式宏与过程宏入门,理解derive宏派生
建议预留 60 分钟
学习目标
- 使用常用过程宏
- 读懂derive派生
关键概念
- derive宏
- 过程宏
- 声明式宏
为什么学习
- 能使用derive(Serialize)等现成过程宏即可,不必深究宏实现
如何检验理解
- 能正确使用derive宏派生serde等trait
补充知识
迭代器与闭包
Iterator适配器与闭包捕获,数据处理的高效惯用法
建议预留 60 分钟
学习目标
- 使用迭代器适配器
- 认识闭包捕获
关键概念
- Iterator
- 闭包
- 适配器
为什么学习
- 对TS开发者熟悉度较高且非项目交付核心,能读懂即可,需要时查阅
如何检验理解
- 能读懂并写出map/filter链式调用处理集合
核心技能
智能指针与堆内存
Box、Arc、Mutex等智能指针与并发共享的基础
建议预留 120 分钟
学习目标
- 理解Box与Rc语义
- 使用Arc实现跨线程共享
关键概念
- Box
- Rc
- Arc
- Mutex
- RefCell
为什么学习
- Axum跨线程共享State依赖Arc,连接池与并发控制依赖这些类型
如何检验理解
- 能解释Arc与Arc<Mutex>在共享状态中的应用场景
补充知识
面向对象风格与设计模式
trait对象多态、封装替代方案与惯用设计
建议预留 60 分钟
学习目标
- 认识trait对象多态
关键概念
- trait对象
- 封装
- 组合优于继承
为什么学习
- 认证项目按功能分层即可,无需深入OOP风格,作为扩展认知保留
如何检验理解
- 能识别trait对象作为多态替代的用法
核心技能
异步编程基础概念
Future、async/await语法、与线程/TS Promise的对比
建议预留 90 分钟
学习目标
- 理解async/await
- 认识Future生命周期
关键概念
- async/await
- Future
- Send/Sync约束
为什么学习
- Axum与SQLx都在async运行时上,理解Future与borrow的关系是写Async handler的钥匙
如何检验理解
- 能解释async块的生命周期限制并写出可编译的异步函数
核心技能
Tokio运行时与任务模型
Tokio多线程运行时、task调度、spawn与主运行时引导
建议预留 120 分钟
学习目标
- 配置Tokio运行时
- 使用spawn创建并发任务
关键概念
- Tokio
- task
- block_on
- spawn
为什么学习
- Axum应用由Tokio驱动,main入口与并行handler都依赖对其运行时的正确使用
如何检验理解
- 能写出#[tokio::main]入口并理解task如何并行执行
基础概念
异步I/O与网络基础
TcpStream/AsyncRead/AsyncWrite基础,理解HTTP底层如何承载于异步I/O
建议预留 90 分钟
学习目标
- 认识AsyncRead/Write
- 理解网络承载
关键概念
- AsyncRead
- AsyncWrite
- TcpStream
为什么学习
- Axum封装了底层网络细节,本节点仅需理解其为HTTP服务提供异步承载
如何检验理解
- 能解释HTTP请求如何被Tokio异步I/O处理
核心技能
配置管理与日志
环境变量、config库、tracing结构化日志体系
建议预留 60 分钟
学习目标
- 管理环境配置
- 接入tracing日志
关键概念
- 环境变量
- tracing
- config
为什么学习
- 区分开发/测试/生产环境配置是认证项目可交付与可部署的必备能力
如何检验理解
- 能用环境变量配置数据库URL与密钥并跨环境区分
核心技能
异步共享状态与并发控制
Arc<Mutex/Tokio RwLock>共享状态、channel消息传递
建议预留 90 分钟
学习目标
- 共享可变状态
- 使用Mutex/RwLock
- 并发安全
关键概念
- Arc
- Mutex
- RwLock
- channel
为什么学习
- Axum以Arc共享State、连接池跨请求共享,需正确处理并发访问
如何检验理解
- 能通过State共享Arc<Mutex>并在并发请求下安全读写
核心技能
HTTP服务器框架(Axum)
Axum路由、提取器、状态、中间件、响应构造
建议预留 120 分钟
学习目标
- 定义Router与路由
- 使用Extractor提取请求
- 管理State与响应
关键概念
- Router
- Extractor
- State
- 响应构造
为什么学习
- 交付项目的核心载体,全部认证端点都构建于此,需能自如组合各API
如何检验理解
- 能构建含路由+状态+提取器的REST服务并正确处理请求
核心技能
序列化与数据格式(serde)
serde派生、JSON处理、DTO数据模型设计
建议预留 90 分钟
学习目标
- serde JSON序列化
- 设计DTO模型
关键概念
- serde
- JSON
- DTO
- Serialize/Deserialize
为什么学习
- 所有HTTP请求/响应与数据库行都需要serde序列化映射为JSON
如何检验理解
- 能为请求与响应结构定义serde派生并正确完成JSON转换
核心技能
RESTful API设计
端点设计、状态码、错误响应结构与资源命名规范
建议预留 45 分钟
学习目标
- 设计REST端点
- 规范化错误响应
关键概念
- REST语义
- 状态码
- 响应结构
为什么学习
- 认证API的注册/登录/资料端点需遵循清晰REST规范,errors响应一致
如何检验理解
- 能设计并实现结构一致的JSON错误响应与合理状态码
核心技能
中间件与请求流水线
自定义中间件、日志、认证鉴权、超时与限流
建议预留 120 分钟
学习目标
- 自定义中间件
- 接入认证与限流
关键概念
- Middleware
- tower
- 鉴权
为什么学习
- 认证中间件与限流是本项目安全层的支柱,需能自定义中间件
如何检验理解
- 能编写认证中间件对受保护路由做授权检查
核心技能
异步测试与调试
单元/集成测试、tokio::test、测试数据库与错误调试
建议预留 90 分钟
学习目标
- 编写异步单元测试
- 编写HTTP集成测试
- 调试异步代码
关键概念
- tokio::test
- cargo test
- 集成测试
为什么学习
- 交付目标明确要求认证测试,把测试从验证手段提升为驱动开发的习惯
如何检验理解
- 能写tokio::test异步测试并针对handler发送HTTP断言
核心技能
部署与服务上线
Docker容器化、环境构建、发布流程与运维要点
建议预留 60 分钟
学习目标
- Docker构建Rust应用
- 掌握发布流程
关键概念
- Dockerfile
- 发布流程
- 运维要点
为什么学习
- 交付目标包含部署,先掌握容器化与发布流程的整体认知
如何检验理解
- 能说明Rust应用容器化的关键步骤与发布checklist
补充知识
Cargo workspace与工程规模化
多crate工作区、feature特性与release构建优化
建议预留 60 分钟
学习目标
- 认识workspace
- 了解feature
关键概念
- workspace
- feature
- release构建
为什么学习
- 单包认证项目暂不需要workspace,了解即可,规模扩大时再深化
如何检验理解
- 能识别单一crate何时应拆分为workspace
核心技能
数据库访问(SQLx/PostgreSQL)
异步连接池、编译期查询校验、事务处理
建议预留 120 分钟
学习目标
- 配置PgPool连接池
- 参数化查询防注入
- 事务处理
关键概念
- PgPool
- SQLx
- 参数化查询
- 事务
为什么学习
- 认证项目直接依赖SQLx读写PostgreSQL用户表,连接池与查询是核心
如何检验理解
- 能用SQLx连接池执行参数化查询并提交事务
核心技能
Web安全防护
防护SQL注入、XSS、CSRF、速率限制、输入校验
建议预留 90 分钟
学习目标
- 防护SQL注入
- 输入校验
- 速率限制
关键概念
- SQL注入
- 参数化查询
- CSRF
- ratelimit
为什么学习
- 认证接口直面攻击面,参数化查询与输入校验是可靠交付的安全底线
如何检验理解
- 能说明并实现防SQL注入的参数化查询与登录速率限制
补充知识
性能优化与基准测试
连接池调优、索引优化、criterion基准与吞吐提升
建议预留 90 分钟
学习目标
- 认识连接池调优
- 理解索引优化
关键概念
- 连接池
- 索引
- criterion
为什么学习
- 对初版交付为nice-to-have,了解连接池与索引即可,深入优化待后期
如何检验理解
- 能说明连接池大小与索引如何影响查询性能
核心技能
Docker多阶段构建与编排
Dockerfile多阶段构建Rust镜像、docker-compose编排App与PostgreSQL
建议预留 90 分钟
学习目标
- 多阶段构建镜像
- docker-compose编排
- 环境联调
关键概念
- Dockerfile
- docker-compose
- 多阶段构建
为什么学习
- 交付脚本的落地实现,需能镜像构建并编排数据库+应用一体化启动
如何检验理解
- 能写出多阶段Dockerfile并用docker-compose同时拉起应用与Postgres
核心技能
SQLx迁移与数据库建模
用sqlx migrate管理Schema版本演进,设计用户与会话表
建议预留 90 分钟
学习目标
- 设计用户表
- 编写并执行迁移
- 回滚/演进schema
关键概念
- sqlx migrate
- DDL
- schema演进
为什么学习
- 认证项目的users表结构与迁移脚本是交付物的一部分,需能演进Schema
如何检验理解
- 能编写迁移将新用户表纳入并通过迁移命令应用
核心技能
密码哈希与安全存储
使用argon2/bcrypt进行密码哈希与验证
建议预留 60 分钟
学习目标
- argon2哈希密码
- 安全比对校验
关键概念
- argon2
- bcrypt
- 密码哈希
为什么学习
- 注册/登录的核心,绝不明文存密码,是认证可靠性的关键技术点
如何检验理解
- 能实现注册时哈希、登录时校验密码的完整流程
核心技能
CI/CD流水线
GitHub Actions自动构建、运行测试、clippy/fmt静态检查与镜像发布
建议预留 90 分钟
学习目标
- 配置Actions
- 集成clippy/fmt
- 触发自动验证
关键概念
- GitHub Actions
- clippy
- fmt
- CI
为什么学习
- 把测试与静态检查固化为自动验证,保证每次改动可交付
如何检验理解
- 能配置GitHub Actions在push时跑测试与clippy并发布镜像
核心技能
JWT/会话认证与授权
JWT签发校验、认证中间件、角色权限控制
建议预留 120 分钟
学习目标
- 签发与校验JWT
- 实现认证中间件
- 角色权限控制
关键概念
- JWT
- Bearer认证
- 权限控制
- 角色
为什么学习
- 交付项目认证的主环节,实现签发token、保护路由与角色权限
如何检验理解
- 能实现登录签发JWT并让受保护路由校验token决定授权
核心技能
端到端认证测试与测试数据库
基于测试数据库的注册/登录/鉴权端到端流程测试
建议预留 120 分钟
学习目标
- 搭建测试数据库
- 覆盖完整认证流程
- 隔离测试环境
关键概念
- 测试数据库
- 端到端测试
- 环境隔离
为什么学习
- 交付目标的核心验证,用独立测试数据库跑完整认证流程断言
如何检验理解
- 能启动测试库并跑通注册→登录→访问受保护路由的端到端测试
核心技能
认证API交付项目(里程碑)
整合全部能力交付可运行、已测试、可部署的用户认证API服务
建议预留 300 分钟
学习目标
- 整合全栈能力产出交付物
- 独立排查与解决集成问题
关键概念
- 端到端集成
- 交付验收
- 质量保障
为什么学习
- 最终交付物,综合验证路由/认证/数据库/测试/部署全部能力达成目标
如何检验理解
- 交付含完整认证+REST设计+端到端测试+Docker编排+CI的项目并通过验收
前置关系与知识联系
- 异步共享状态与并发控制 → 性能优化与基准测试
- 异步测试与调试 → Docker多阶段构建与编排
- Tokio运行时与任务模型 → 异步I/O与网络基础
- 序列化与数据格式(serde) → 数据库访问(SQLx/PostgreSQL)
- 错误处理(Error Handling) → 中间件与请求流水线
- Web安全防护 → 端到端认证测试与测试数据库
- 变量、常量与数据类型 → 所有权(Ownership)机制
- HTTP服务器框架(Axum) → Cargo workspace与工程规模化
- 异步编程基础概念 → Tokio运行时与任务模型
- Tokio运行时与任务模型 → 异步共享状态与并发控制
- 密码哈希与安全存储 → JWT/会话认证与授权
- HTTP服务器框架(Axum) → 中间件与请求流水线
- 错误处理(Error Handling) → 异步测试与调试
- 部署与服务上线 → Docker多阶段构建与编排
- 模块系统与cargo工程管理 → 泛型与trait系统
- 异步I/O与网络基础 → HTTP服务器框架(Axum)
- CI/CD流水线 → 认证API交付项目(里程碑)
- SQLx迁移与数据库建模 → 认证API交付项目(里程碑)
- HTTP服务器框架(Axum) → 部署与服务上线
- Web安全防护 → JWT/会话认证与授权
- HTTP服务器框架(Axum) → 序列化与数据格式(serde)
- Docker多阶段构建与编排 → CI/CD流水线
- 借用(Borrowing)与引用 → 生命周期(Lifetime)概念
- 泛型与trait系统 → 面向对象风格与设计模式
- 生命周期(Lifetime)概念 → 智能指针与堆内存
- 模式匹配与Option/Result → 错误处理(Error Handling)
- HTTP服务器框架(Axum) → RESTful API设计
- 所有权(Ownership)机制 → Slice与String深入
- 智能指针与堆内存 → 异步共享状态与并发控制
- Slice与String深入 → 标准库集合类型
- 变量、常量与数据类型 → 函数与控制流
- 序列化与数据格式(serde) → Web安全防护
- 结构体与枚举 → 模块系统与cargo工程管理
- 异步测试与调试 → CI/CD流水线
- Tokio运行时与任务模型 → HTTP服务器框架(Axum)
- Docker多阶段构建与编排 → 认证API交付项目(里程碑)
- Tokio运行时与任务模型 → 数据库访问(SQLx/PostgreSQL)
- 异步测试与调试 → 性能优化与基准测试
- 端到端认证测试与测试数据库 → 认证API交付项目(里程碑)
- 函数与控制流 → 结构体与枚举
- 中间件与请求流水线 → JWT/会话认证与授权
- 泛型与trait系统 → 迭代器与闭包
- Tokio运行时与任务模型 → 配置管理与日志
- 异步测试与调试 → 端到端认证测试与测试数据库
- 借用(Borrowing)与引用 → 结构体与枚举
- 模块系统与cargo工程管理 → Cargo workspace与工程规模化
- 数据库访问(SQLx/PostgreSQL) → 密码哈希与安全存储
- 中间件与请求流水线 → Web安全防护
- 泛型与trait系统 → 智能指针与堆内存
- 数据库访问(SQLx/PostgreSQL) → SQLx迁移与数据库建模
- JWT/会话认证与授权 → 认证API交付项目(里程碑)
- Rust安装与环境配置 → 变量、常量与数据类型
- 迭代器与闭包 → 异步编程基础概念
- 模块系统与cargo工程管理 → 宏(Macro)基础
- 智能指针与堆内存 → 异步编程基础概念
- 数据库访问(SQLx/PostgreSQL) → 端到端认证测试与测试数据库
- 结构体与枚举 → 泛型与trait系统
- 结构体与枚举 → 模式匹配与Option/Result
- 所有权(Ownership)机制 → 借用(Borrowing)与引用
- 智能指针与堆内存 → 面向对象风格与设计模式
- 智能指针与堆内存 → Tokio运行时与任务模型
- 泛型与trait系统 → 序列化与数据格式(serde)
- 变量、常量与数据类型 → Slice与String深入
- JWT/会话认证与授权 → 端到端认证测试与测试数据库
- HTTP服务器框架(Axum) → 异步测试与调试
结合互动地图查看具体关系类型,再选择下一步。