Skip to content

Y-ZD-heheka/rust_learn

Repository files navigation

Rust 学习项目 - 现代化学习指南

一个全面、系统、实用的 Rust 编程学习项目,采用 Rust 2021/2024 最佳实践,涵盖从基础语法到高级模式的完整学习路径。

Rust Version Edition License

项目特点

  • 渐进式学习路径 - 从基础概念到高级模式
  • 11,384+ 行代码示例 - 每个模块都有详细的实现
  • 现代 Rust 实践 - 采用最新的 2021/2024 特性
  • 丰富的生态库 - Tokio、Serde、Clap 等实际应用
  • 完整的测试覆盖 - 单元测试、属性测试、基准测试
  • 详细的文档注释 - 代码即文档

快速开始

环境要求

  • Rust 1.70+ (安装 Rust)
  • Cargo(Rust 包管理器,通常随 Rust 一起安装)

安装与运行

# 克隆项目
git clone https://github.com/Y-ZD-heheka/rust_learn.git
cd rust_learn

# 构建项目
cargo build

# 运行所有示例
cargo run

# 运行特定模块
cargo run -- basics
cargo run -- ownership
cargo run -- concurrency

# 查看所有可用模块
cargo run -- --help

# 运行测试
cargo test

# 生成文档
cargo doc --open

项目结构

src/
  main.rs                 # 程序入口,模块选择器
  lib.rs                  # 库根文件
  basics.rs              # 基础语法和核心概念
  ownership.rs           # 所有权、借用、生命周期
  types.rs               # 类型系统、结构体、枚举
  error_handling.rs      # 错误处理、Result 类型
  concurrency.rs         # 并发编程、异步处理
  modules.rs             # 模块系统、包管理
  macros.rs              # 宏系统、元编程
  advanced_types.rs      # 高级类型系统
  testing.rs             # 测试策略、基准测试
  ecosystem.rs           # 生态系统、工具链
  advanced_patterns.rs   # 设计模式(Builder、Strategy 等)
  popular_libraries.rs   # 常用库示例(Serde、Clap 等)
  best_practices.rs      # 最佳实践和编码规范
  database.rs            # 数据库集成(暂时禁用)
  pitfalls.rs            # 常见陷阱和解决方案
  security.rs            # 安全编程实践

模块详情

1. 基础语法 (basics.rs)

  • 变量声明与绑定
  • 基本数据类型
  • 函数定义与调用
  • 控制流(if/match/loop)
  • 算法实现(快速排序、动态规划、Dijkstra)
  • 代码行数:682 行
cargo run -- basics

2. 所有权系统 (ownership.rs)

  • 所有权基础
  • 借用与引用
  • 可变性规则
  • 生命周期概念
  • 内存安全保证
  • 代码行数:800 行
cargo run -- ownership

3. 类型系统 (types.rs)

  • 原始类型
  • 复合类型(结构体、枚举、元组)
  • Trait 定义与实现
  • 泛型编程
  • 关联类型
  • 代码行数:1,203 行
cargo run -- types

4. 错误处理 (error_handling.rs)

  • Result 类型
  • panic! 宏
  • 自定义错误类型
  • 错误恢复策略
  • 最佳实践
  • 代码行数:999 行
cargo run -- error_handling

5. 并发编程 (concurrency.rs)

  • 线程基础
  • 消息传递
  • 共享状态(Arc、Mutex)
  • Async/await(Tokio)
  • 异步流处理
  • 代码行数:452 行
cargo run -- concurrency

6. 模块系统 (modules.rs)

  • 模块定义与组织
  • 包和 crate 管理
  • 可见性与私有性
  • 模块最佳实践
  • 代码行数:738 行
cargo run -- modules

7. 宏系统 (macros.rs)

  • 声明式宏
  • 宏规则与模式匹配
  • 递归宏
  • DSL 构建
  • 代码行数:951 行
cargo run -- macros

8. 高级类型 (advanced_types.rs)

  • 类型级编程
  • 幻影类型
  • 类型状态
  • Newtype 模式
  • 类型设计模式
  • 代码行数:991 行
cargo run -- advanced_types

9. 设计模式 (advanced_patterns.rs)

  • Builder 模式 - 灵活的对象构建
  • Strategy 模式 - 算法族选择
  • Observer 模式 - 事件与通知
  • State 模式 - 状态机实现
  • Factory 模式 - 对象创建
  • Decorator 模式 - 函数组合
  • 代码行数:650 行
cargo run -- advanced_patterns

10. 测试 (testing.rs)

  • 单元测试
  • 集成测试
  • 属性测试
  • 基准测试
  • 测试组织
  • 代码行数:1,158 行
cargo run -- testing
cargo test

11. 生态系统 (ecosystem.rs)

  • Cargo 工具链
  • crates.io 生态系统
  • 推荐库
  • 开发工具
  • 最佳实践
  • 代码行数:315 行
cargo run -- ecosystem

12. 常用库 (popular_libraries.rs)

  • Serde - 序列化/反序列化
  • Clap - 命令行参数解析
  • Reqwest - HTTP 客户端
  • Anyhow - 错误处理
  • Thiserror - 自定义错误
  • Tracing - 日志与追踪
  • Chrono - 日期/时间处理
  • UUID - 标识符生成
  • 代码行数:526 行
cargo run -- popular_libraries

13. 最佳实践 (best_practices.rs) - 新增

  • 代码组织与结构
  • 命名规范
  • 文档标准
  • 性能优化技巧
  • 惯用 Rust 模式
  • 代码审查指南
  • 代码行数:605 行
cargo run -- best_practices

14. 数据库集成 (database.rs) - 新增

  • SQLx 使用示例
  • Diesel ORM 示例
  • 连接池
  • 事务处理
  • 迁移管理
  • 代码行数:489 行(暂时禁用)
# 注意:此模块暂时禁用
# cargo run -- database

15. 常见陷阱 (pitfalls.rs) - 新增

  • 所有权陷阱
  • 借用检查器问题
  • 性能反模式
  • 并发错误
  • 内存泄漏模式
  • 解决方案与变通方法
  • 代码行数:484 行
cargo run -- pitfalls

16. 安全编程 (security.rs) - 新增

  • 输入验证
  • 安全错误处理
  • 加密操作
  • 内存安全注意事项
  • 安全最佳实践
  • 常见漏洞
  • 代码行数:341 行
cargo run -- security

学习路径建议

初级阶段(模块 1-4)

如果你是 Rust 新手,按以下顺序学习:

  1. basics.rs - 了解基础语法和变量
  2. ownership.rs - 掌握所有权(Rust 核心概念)
  3. types.rs - 学习类型系统
  4. error_handling.rs - 理解错误处理

预计时间:2-3 周

中级阶段(模块 5-9)

打好基础后,继续学习: 5. concurrency.rs - 并发编程 6. modules.rs - 代码组织 7. macros.rs - 元编程 8. testing.rs - 测试策略 9. advanced_patterns.rs - 设计模式

预计时间:3-4 周

高级阶段(模块 10-16)

提升实战能力: 10. popular_libraries.rs - 生态库应用 11. ecosystem.rs - 工具链掌握 12. advanced_types.rs - 深入类型系统 13. best_practices.rs - 最佳实践与规范 14. security.rs - 安全编程 15. pitfalls.rs - 常见陷阱与解决方案 16. database.rs - 数据库集成

预计时间:2-3 周

依赖项

# 异步运行时
tokio = "1.48.0"
futures = "0.3.30"

# 数据处理
serde = "1.0.228"
serde_json = "1.0.145"

# CLI
clap = "4.5.51"

# HTTP 客户端
reqwest = "0.12.24"

# 错误处理
anyhow = "1.0.100"
thiserror = "2.0.17"

# 日志与追踪
tracing = "0.1.41"
tracing-subscriber = "0.3.20"

# 日期/时间
chrono = "0.4.42"

# 标识符
uuid = "1.18.1"

使用示例

运行特定模块

# 查看帮助
cargo run -- --help

# 运行 basics 模块
cargo run -- basics

# 运行 ownership 模块
cargo run -- ownership

# 运行所有示例(默认)
cargo run

运行测试

# 运行所有测试
cargo test

# 运行特定测试
cargo test test_add_two

# 运行测试并显示输出
cargo test -- --nocapture

# 单线程测试执行
cargo test -- --test-threads=1

生成文档

# 生成文档并在浏览器中打开
cargo doc --open

# 生成包含私有项的文档
cargo doc --document-private-items --open

性能分析

# 编译优化版本(release 模式)
cargo build --release

# 运行 release 版本
cargo run --release -- basics

# 基准测试
cargo test --release -- --nocapture benchmark

测试覆盖

本项目包含全面的测试:

# 单元测试
cargo test test_

# 集成测试
cargo test --test integration_test

# 所有测试
cargo test --all

测试统计

  • 单元测试:80+ 个
  • 属性测试:15+ 个
  • 集成测试:8+ 个
  • 基准测试:10+ 个

推荐资源

官方资源

学习资源

社区

贡献指南

欢迎贡献!如果你有改进建议:

  1. Fork 本项目
  2. 创建功能分支 (git checkout -b feature/AmazingFeature)
  3. 提交更改 (git commit -m 'Add some AmazingFeature')
  4. 推送到分支 (git push origin feature/AmazingFeature)
  5. 提交 Pull Request

项目改进计划

已完成

  • 基础语法和核心概念模块
  • 所有权和生命周期系统
  • 类型系统和 trait
  • 错误处理模式
  • 并发编程
  • 模块系统
  • 宏系统和元编程
  • 高级类型系统
  • 设计模式(Builder、Strategy、Observer 等)
  • 测试策略
  • 生态系统工具
  • 常用库示例
  • 最佳实践模块
  • 常见陷阱模块
  • 安全编程模块

计划中

  • 启用数据库模块(SQLx、Diesel)
  • 添加更多设计模式示例
  • Web 框架集成(Axum、Actix)
  • 性能优化深入探讨
  • 编译器优化技术
  • FFI(外部函数接口)示例

许可证

本项目采用 MIT 许可证。详见 LICENSE 文件。

作者

Y-ZD-heheka

如果这个项目对你有帮助,请给个 Star!

常见问题(FAQ)

Q: 我应该从哪个模块开始?

A: 如果你是完全的新手,从 basics.rs 开始,然后按照学习路径建议进行学习。

Q: 代码可以用于生产环境吗?

A: 本项目主要用于教育目的。代码质量较高,但在生产环境使用前应进行充分测试。

Q: 如何跳过某些模块?

A: 可以通过 cargo run -- <模块名> 运行特定模块,或编辑 main.rs 中的 MODULE_REGISTRY。

Q: 项目多久更新一次?

A: 项目会定期维护和改进,跟随 Rust 的发展而更新。

Q: 我可以将此项目用于商业目的吗?

A: 可以!MIT 许可证允许商业使用,但需要包含许可证文本。


学习愉快!

About

No description, website, or topics provided.

Resources

Security policy

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages