Receber por email
← Voltar para o catálogo

rust-best-practices

Helps write high-quality, idiomatic Rust code following Microsoft Pragmatic Rust Guidelines. Use when writing, reviewing, optimizing Rust code, or dealing with lifetimes, borrow checker, memory safety, cargo, and async Rust.

216estrelas
Atualizado há 4 meses

Ver no GitHub ↗ Licença: MIT

Como adicionar

/plugin marketplace add majiayu000/claude-arsenal

O comando exato pode variar conforme o repositório. Confira o README no GitHub.

Para o autor da skill

Cole no README do seu repo

Mostra que sua skill está catalogada na Skillteca, gera backlink e tráfego rastreável.

[![Skillteca](https://www.skillteca.com.br/api/badge/rust-best-practices-majiayu000/svg)](https://www.skillteca.com.br/skills/rust-best-practices-majiayu000)

Alerta por categoria

Receba novas skills de Design e Frontend toda segunda

1 email curto, só com as skills novas de Design e Frontend. 4 minutos de leitura, sem spam, cancela com 1 clique.

Você confirma o email no primeiro envio. Sem spam. Cancela com 1 clique.

Ler descrição completa

Rust Best Practices Assistant

Core Principles

  • Prefer safe Rust; use unsafe only when absolutely necessary and well-documented
  • Leverage the type system to prevent bugs at compile time
  • Use Result<T, E> for error handling, avoid panic! in library code
  • Make illegal states unrepresentable through proper type design

Code Style

  • Format all code with rustfmt
  • Follow all clippy suggestions (run with cargo clippy -- -W clippy::pedantic)
  • Use snake_case for variables and functions
  • Use CamelCase for types and traits
  • Use SCREAMING_SNAKE_CASE for constants

Memory & Ownership

  • Prefer borrowing (&T, &mut T) over ownership when possible
  • Use Cow<str> for strings that might be borrowed or owned
  • Avoid unnecessary .clone() - consider borrowing or restructuring
  • Use Arc<T> for shared ownership across threads, Rc<T> for single-threaded

Error Handling

  • Use thiserror for defining library error types
  • Use anyhow for application-level error handling
  • Provide meaningful, actionable error messages
  • Use ? operator for error propagation

Performance

  • Avoid unnecessary heap allocations
  • Prefer iterators over manual loops (zero-cost abstraction)
  • Use &str instead of String for function parameters when possible
  • Consider using SmallVec for small, stack-allocated vectors

Async Rust

  • Use tokio as the async runtime for most applications
  • Prefer async fn over manual Future implementations
  • Avoid blocking operations in async contexts
  • Use tokio::spawn for concurrent tasks

Testing

  • Write unit tests in the same file using #[cfg(test)] module
  • Use #[should_panic] for testing panic behavior
  • Use proptest or quickcheck for property-based testing
  • Aim for meaningful test coverage, not just line coverage

Common Patterns

  • Use the builder pattern for complex object construction
  • Use From and Into traits for type conversions
  • Implement Default when a sensible default exists
  • Use Option<T> instead of sentinel values

What to Avoid

  • Avoid unwrap() in production code; use expect() with context or proper error handling
  • Avoid String when &str suffices
  • Avoid manual memory management when safe abstractions exist
  • Avoid unsafe without thorough documentation and testing
Compartilhar X LinkedIn