15-Rust最佳实践

三方库精选、命名规范与日常开发流程精要

精要笔记 · 基于 Rust语言圣经「Rust 最佳实践」

Rust 最佳实践

生产级项目重稳定性与可维护性。本章汇总库选型、命名惯例与开发习惯(节选自 Cook Rust)。

日常开发三方库精选

同一类别按推荐度降序;生产项目优先选社区活跃、维护稳定的 crate。

类别首选备选/说明
HTTP 客户端reqwest—
Web 框架axumRocket、actix-web
异步运行时tokioasync-std(学习/小项目)
日志tracinglog + 实现;不推荐 slog
可观测OpenTelemetry Rustvector 采集
SQLsqlxdiesel、rbatis
Redisredis-rs—
MongoDB官方驱动—
gRPCtonicgrpc-rs
序列化serde + json/toml/yaml—
搜索(本地)tantivy—
基准测试criterionhyperfine(CLI)
火焰图flame—

完整清单见源码 shengJing/_src/src/practice/third-party-libs.md。

命名规范

类型级用驼峰(UpperCamelCase),值级用蛇形(snake_case)。

条目惯例
模块snake_case
类型/特征/枚举/结构体UpperCamelCase
函数/方法/变量snake_case
常量/静态SCREAMING_SNAKE_CASE
生命周期'a
包名勿加 -rs / -rust 后缀
  • 特征名用动词:Print 优于 Printable
  • 复合词缩写作单词:Uuid 非 UUID

类型转换:as_ / to_ / into_

前缀开销所有权
as_零/极低借 → 借
to_可能分配借 → 借/拥有
into_视情况拥有 → 拥有

迭代器命名

1
2
3
fn iter(&self) -> Iter<'_>       // Item = &T
fn iter_mut(&mut self) -> IterMut // Item = &mut T
fn into_iter(self) -> IntoIter    // Item = T

Getter

优先 fn first(&self),而非 get_first;仅当「通过索引/键取值」时用 get / get_mut。

开发流程要点

实践说明
cargo watch保存即编译,缩短反馈
测试组织单元测试放 mod tests;集成测试放 tests/
cargo clippy静态检查,纳入 CI
覆盖率codecov 等工具辅助
查类型rust-analyzer 跳转;或故意写错类型让编译器提示
1
2
let f: u32 = File::open("hello.txt");
// error: expected u32, found Result<File, Error>

面试资料(外链)

更多见源码 shengJing/_src/src/practice/。

最后修改 July 30, 2026: 更新 (33710aaae)