coding-guidelines
Use when asking about Rust code style or best practices. Keywords: naming, formatting, comment, clippy, rustfmt, lint, code style, best practice, P.NAM, G.FMT, code review, naming convention, variable naming, function naming, type naming, 命名规范, 代码风格, 格式化, 最佳实践, 代码审查, 怎么命名
By actionbook · 3,389 installs
npx skills add actionbook/rust-skills --skill coding-guidelines
Source repository · Upstream listing
Rust Coding Guidelines (50 Core Rules)
Naming (Rust Specific)
Rule Guideline
No get prefix fn name() not fn get name()
Iterator convention iter() / iter mut() / into iter()
Conversion naming as (cheap &), to (expensive), into (ownership)
Static var prefix G CONFIG for static , no prefix for const
Data Types
Rule Guideline
Use newtypes struct Email(String) for domain semantics
Prefer slice patterns if let [first, .., last] = slice
Pre allocate Vec::with capacity() , String::with capacity()
Avoid Vec abuse Use arrays for fixed sizes
Strings
Rule Guideline
Prefer bytes s.bytes() over s.chars() when ASCII
Use Cow<str When might modify borrowed data
Use format! Over string concatenation with +
Avoid nested iteration contains() on string is O(n m)
Error Handling
Rule Guideline
Use ? propagation Not try!() macro
expect() over unwrap() When value guaranteed
Assertions for invariants assert! at function entry
Memory
Rule Guideline
Meaningful lifetimes 'src , 'ctx not just 'a
try borrow() for RefCell Avoid panic
Shadowing for transformation let x = x.parse()?
Concurrency
Rule Guideline
Identify lock ordering Prevent deadlocks
Atomics for primitives Not Mutex for bool/usize
Choose memory order carefully Relaxed/Acquire/Release/SeqCst
Async
Rule Guideline
Sync for CPU bound Async is for I/O
Don't hold locks across await Use scoped guards
Macros
Rule Guideline
Avoid unless necessary Prefer functions/generics
Follow Rust syntax Macro input should look like Rust
Deprecated → Better
Deprecated Better Since
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!() ? operator 2018
Quick Reference
Claude knows Rust conventions well. These are the non obvious Rust specific rules.