mcpField
C
coding-guidelines

coding-guidelines

github.com/actionbook开发1.6k4.0k 次安装9 周前更新
代码仓库

关于 coding-guidelines

汇总 50 条 Rust 编码指南,涵盖命名、类型、字符串、错误处理、内存、并发、异步代码和宏,侧重不那么直观的 Rust 约定。

主要功能

  1. 01涵盖 50 条 Rust 编码规则
  2. 02提供命名与数据类型建议
  3. 03说明字符串和错误处理规则
  4. 04涉及内存、并发与异步建议
  5. 05列出弃用模式及替代方案

适用场景

  1. 01检查 Rust 命名与转换约定
  2. 02审查 Rust 错误处理选择
  3. 03检查异步代码与锁的使用

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/actionbook/rust-skills --skill coding-guidelines

安装后在 Claude Code 中输入/coding-guidelines确认已加载。

附带文件clippy-lints/_index.mdindex/rules-index.md

详细介绍

Rust 编码指南(50 条核心规则)

命名(Rust 特定)

规则指南
不使用 get_ 前缀fn name(),而不是 fn get_name()
迭代器约定iter() / iter_mut() / into_iter()
转换命名as_(廉价且借用)、to_(开销较大)、into_(转移所有权)
静态变量前缀static 使用 G_CONFIG,const 不加前缀

数据类型

规则指南
使用新类型用 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
对 RefCell 使用 try_borrow()避免 panic
转换时使用变量遮蔽let x = x.parse()?

并发

规则指南
明确锁的获取顺序防止死锁
基本类型使用原子类型不要对 bool/usize 使用 Mutex
谨慎选择内存顺序Relaxed/Acquire/Release/SeqCst

异步

规则指南
CPU 密集型任务使用同步代码异步适用于 I/O
不要在 await 期间持有锁使用作用域守卫

宏

规则指南
非必要时避免使用优先使用函数/泛型
遵循 Rust 语法宏输入应符合 Rust 语法

已弃用 → 更佳替代方案

已弃用更佳替代方案版本
lazy_static!std::sync::OnceLock1.70
once_cell::Lazystd::sync::LazyLock1.80
std::sync::mpsccrossbeam::channel-
std::sync::Mutexparking_lot::Mutex-
failure/error-chainthiserror/anyhow-
try!()? 运算符2018

快速参考

Naming: snake_case (fn/var), CamelCase (type), SCREAMING_CASE (const)
Format: rustfmt (just use it)
Docs: /// for public items, //! for module docs
Lint: #![warn(clippy::all)]

Claude 非常了解 Rust 约定。以下是一些不太显而易见的 Rust 特定规则。

评论

支持 Markdown