Agent Skills: Rust Development

|

UncategorizedID: laurigates/claude-plugins/rust-development

Install this agent skill to your local

pnpm dlx add-skill https://github.com/laurigates/claude-plugins/tree/HEAD/rust-plugin/skills/rust-development

Skill Files

Browse the full folder contents for rust-development.

Download Skill

Loading file tree…

rust-plugin/skills/rust-development/SKILL.md

Skill Metadata

Name
rust-development
Description
|

Rust Development

Expert knowledge for modern systems programming with Rust, focusing on memory safety, fearless concurrency, and zero-cost abstractions.

Core Expertise

Modern Rust Ecosystem

  • Cargo: Build system, package manager, and workspace management
  • Rustc: Compiler optimization, target management, and cross-compilation
  • Clippy: Linting for idiomatic code and performance improvements
  • Rustfmt: Consistent code formatting following Rust style guidelines
  • Rust-analyzer: Advanced IDE support with LSP integration

Language Features

  • Rust 2024 edition: RPITIT, async fn in traits, impl Trait improvements
  • Const generics and compile-time computation
  • Generic associated types (GATs)
  • Let-else patterns and if-let chains

Key Capabilities

Ownership & Memory Safety

  • Implement ownership patterns with borrowing and lifetimes
  • Design zero-copy abstractions and efficient memory layouts
  • Apply RAII patterns through Drop trait and smart pointers (Box, Rc, Arc)
  • Leverage interior mutability patterns (Cell, RefCell, Mutex, RwLock)
  • Use Pin/Unpin for self-referential structures

Async Programming & Concurrency

  • Tokio: Async runtime for high-performance network applications
  • async-std: Alternative async runtime with familiar API design
  • Futures: Composable async abstractions and stream processing
  • Rayon: Data parallelism with work-stealing thread pools
  • Design lock-free data structures with atomics and memory ordering

Error Handling & Type Safety

  • Design comprehensive error types with thiserror and anyhow
  • Implement Result<T, E> and Option<T> patterns effectively
  • Use pattern matching for exhaustive error handling
  • Apply type-state patterns for compile-time guarantees

Performance Optimization

  • Profile with cargo-flamegraph, perf, and criterion benchmarks
  • Optimize with SIMD intrinsics and auto-vectorization
  • Implement zero-cost abstractions and inline optimizations
  • Use unsafe code judiciously with proper safety documentation

Testing & Quality Assurance

  • Unit Testing: #[test] modules with assertions
  • Integration Testing: tests/ directory for end-to-end validation
  • Criterion: Micro-benchmarking with statistical analysis
  • Miri: Undefined behavior detection in unsafe code
  • Fuzzing: cargo-fuzz for security and robustness testing

Essential Commands

# Project setup
cargo new my-project      # Binary crate
cargo new my-lib --lib    # Library crate
cargo init                # Initialize in existing directory

# Development workflow
cargo build                      # Debug build
cargo build --release           # Optimized build
cargo run                       # Build and run
cargo run --release             # Run optimized
cargo test                      # Run all tests
cargo test --lib               # Library tests only
cargo bench                     # Run benchmarks

# Code quality
cargo clippy                    # Lint code
cargo clippy -- -W clippy::pedantic  # Stricter lints
cargo fmt                       # Format code
cargo fmt --check              # Check formatting
cargo fix                       # Auto-fix warnings

# Dependencies
cargo add serde --features derive  # Add dependency
cargo update                       # Update deps
cargo audit                        # Security audit
cargo deny check                   # License/advisory check

# Advanced tools
cargo expand                    # Macro expansion
cargo flamegraph               # Profile with flame graph
cargo doc --open               # Generate and open docs
cargo miri test                # Check for UB

# Cross-compilation
rustup target add wasm32-unknown-unknown
cargo build --target wasm32-unknown-unknown

Best Practices

Idiomatic Rust Patterns

// Use iterators over manual loops
let sum: i32 = numbers.iter().filter(|x| **x > 0).sum();

// Prefer combinators for Option/Result
let value = config.get("key")
    .and_then(|v| v.parse().ok())
    .unwrap_or_default();

// Use pattern matching effectively
match result {
    Ok(value) if value > 0 => process(value),
    Ok(_) => handle_zero(),
    Err(e) => return Err(e.into()),
}

// Let-else for early returns
let Some(config) = load_config() else {
    return Err(ConfigError::NotFound);
};

Project Structure

my-project/
├── Cargo.toml
├── src/
│   ├── lib.rs        # Library root
│   ├── main.rs       # Binary entry point
│   ├── error.rs      # Error types
│   └── modules/
│       └── mod.rs
├── tests/            # Integration tests
├── benches/          # Benchmarks
└── examples/         # Example programs

Error Handling

use thiserror::Error;

#[derive(Error, Debug)]
pub enum AppError {
    #[error("IO error: {0}")]
    Io(#[from] std::io::Error),

    #[error("parse error: {message}")]
    Parse { message: String },

    #[error("not found: {0}")]
    NotFound(String),
}

pub type Result<T> = std::result::Result<T, AppError>;

Common Crates | Crate | Purpose | |-------|---------| | serde | Serialization/deserialization | | tokio | Async runtime | | reqwest | HTTP client | | sqlx | Async SQL | | clap | CLI argument parsing | | tracing | Logging/diagnostics | | anyhow | Application errors | | thiserror | Library errors |

For detailed async patterns, unsafe code guidelines, WebAssembly compilation, embedded development, and advanced debugging, see REFERENCE.md.