Rust编码规范指南 coding-guidelines

Rust编程语言代码风格与最佳实践完整指南,涵盖命名规范、数据类型、字符串处理、错误处理、内存管理、并发异步等50条核心规则。提供Rustfmt、Clippy工具使用建议,包含已弃用API替代方案。适用于Rust开发者代码审查、项目规范制定、团队协作标准化。关键词:Rust代码风格、命名规范、最佳实践、rustfmt、clippy、代码审查、Rust编程指南、编码标准、Rust开发规范

后端开发 0 次安装 0 次浏览 更新于 2/27/2026

name: coding-guidelines description: “当询问Rust代码风格或最佳实践时使用。关键词:命名、格式化、注释、clippy、rustfmt、lint、代码风格、最佳实践、P.NAM、G.FMT、代码审查、命名约定、变量命名、函数命名、类型命名、命名规范、代码风格、格式化、最佳实践、代码审查、怎么命名” source: https://rust-coding-guidelines.github.io/rust-coding-guidelines-zh/ user-invocable: false

Rust编码规范(50条核心规则)

命名(Rust特有)

规则 指导原则
不使用get_前缀 fn name()而非fn get_name()
迭代器约定 iter() / iter_mut() / into_iter()
转换命名 as_(廉价借用)、to_(昂贵复制)、into_(所有权转移)
静态变量前缀 staticG_CONFIGconst无前缀

数据类型

规则 指导原则
使用新类型 struct Email(String)用于领域语义
优先切片模式 if let [first, .., last] = slice
预分配 Vec::with_capacity()String::with_capacity()
避免滥用Vec 固定大小使用数组

字符串

规则 指导原则
优先字节操作 ASCII场景用s.bytes()而非s.chars()
使用Cow<str> 可能修改借用数据时
使用format! 优于字符串拼接+
避免嵌套迭代 字符串contains()是O(n*m)

错误处理

规则 指导原则
使用?传播 而非try!()
expect()优于unwrap() 值有保证时使用
断言用于不变量 函数入口用assert!

内存

规则 指导原则
有意义的生命周期 'src'ctx而非仅'a
RefCelltry_borrow() 避免panic
转换使用变量遮蔽 let x = x.parse()?

并发

规则 指导原则
识别锁顺序 预防死锁
基本类型用原子操作 bool/usize不用Mutex
谨慎选择内存序 Relaxed/Acquire/Release/SeqCst

异步

规则 指导原则
CPU密集型用同步 异步用于I/O
不在await期间持有锁 使用作用域守卫

规则 指导原则
非必要避免 优先函数/泛型
遵循Rust语法 宏输入应类似Rust代码

已弃用 → 更好选择

已弃用 更好选择 起始版本
lazy_static! std::sync::OnceLock 1.70
once_cell::Lazy std::sync::LazyLock 1.80
std::sync::mpsc crossbeam::channel -
std::sync::Mutex parking_lot::Mutex -
failure/error-chain thiserror/anyhow -
try!() ?运算符 2018

快速参考

命名:snake_case(函数/变量)、CamelCase(类型)、SCREAMING_CASE(常量)
格式化:rustfmt(直接用)
文档:///用于公开项、//!用于模块文档
代码检查:#![warn(clippy::all)]

Claude熟悉Rust约定。这些是非显而易见的Rust特有规则。