Rust: libs
1 · Rust libs#
1.1 · 常用第三方 crate#
Rust 标准库故意保持小巧(“小标准库哲学”),大量能力由社区 crate 提供。
https://ohadravid.github.io/posts/2024-12-state-of-the-crates
1.1.1 · 异步运行时 & 网络
| crate | 用途 |
|---|---|
| tokio | 异步运行时,事实标准 |
| axum | HTTP 服务器(tokio 团队出品,基于 tower) |
| reqwest | HTTP 客户端(建议用 rustls 后端避免 OpenSSL) |
| tonic / prost | gRPC 服务端/客户端 + protobuf |
| tower / tower-http | 中间件抽象层(超时、限流、认证等) |
1.1.2 · 序列化
| crate | 用途 |
|---|---|
| serde / serde_json | 序列化/反序列化框架 + JSON |
| bincode | 紧凑二进制格式(配合 serde) |
| toml | TOML 配置文件解析 |
| serde_yaml | YAML 解析 |
| serde_qs | querystring 解析 |
| humantime-serde | 人类可读的 duration("3m" → 180s) |
1.1.3 · 错误处理
| crate | 用途 |
|---|---|
| thiserror | 为库定义错误类型(derive Error) |
| anyhow | 为应用做错误处理(.context() 附加上下文) |
1.1.4 · CLI#
| crate | 用途 |
|---|---|
| clap | 功能丰富的命令行解析 |
| argh | 轻量命令行解析(Google 出品) |
1.1.5 · 日志 & 可观测
| crate | 用途 |
|---|---|
| tracing / tracing-subscriber | 结构化日志 + 分布式追踪 |
| prometheus | Prometheus 指标采集 |
| env_logger | 简单的基于环境变量的日志 |
1.1.6 · 数据库
| crate | 用途 |
|---|---|
| sqlx | 异步 SQL(编译期检查查询) |
| sea-orm / sea-query | 异步 ORM + 查询构建器 |
| diesel | 同步 ORM,编译期安全 |
1.1.7 · 测试
| crate | 用途 |
|---|---|
| rstest | 参数化测试 + fixture(类似 pytest) |
| criterion | 基准测试 |
| approx | 浮点近似比较 |
| testcontainers | 用 Docker 容器做集成测试 |
1.1.8 · 时间 & ID#
| crate | 用途 |
|---|---|
| chrono | 日期时间处理(UTC 为主) |
| jiff | 更完善的时区支持(新秀) |
| uuid | UUID 生成与解析 |
1.1.9 · 并发 & 数据结构
| crate | 用途 |
|---|---|
| rayon | 数据并行(并行迭代器) |
| dashmap | 并发 HashMap(分片锁) |
| papaya | 无锁并发 HashMap |
| crossbeam | 并发原语(channel、epoch GC 等) |
| parking_lot | 更快的 Mutex/RwLock |
1.1.10 · 构建 & 宏
| crate | 用途 |
|---|---|
| bon | 为 struct 自动生成 Builder |
| strum | 枚举增强(EnumIter、EnumString 等) |
| darling | 编写 proc macro 时解析属性 |
| derivative | 自定义 derive(如隐藏敏感字段的 Debug) |
1.1.11 · 其他常用
| crate | 用途 |
|---|---|
| regex | 正则表达式 |
| rand | 随机数生成 |
| bytes | 高效字节缓冲区(网络编程常用) |
| itertools | 迭代器扩展方法 |
| rustc-hash | 更快的非加密 HashMap hasher |
| tikv-jemallocator | jemalloc 分配器(减少内存碎片) |
| image | 图像处理 |
| ndarray | 多维数组(Rust 的 numpy) |
| dotenvy | 加载 .env 文件(dotenv 的维护分支) |