Rust

Rust development patterns, project setup, CLI/TUI applications, error handling, and system integration

$ 설치

git clone https://github.com/lawless-m/claude-skills /tmp/claude-skills && cp -r /tmp/claude-skills/.claude/skills/Rust ~/.claude/skills/claude-skills

// tip: Run this command in your terminal to install the skill


name: Rust description: Rust development patterns, project setup, CLI/TUI applications, error handling, and system integration

Rust Development

This skill covers Rust development with two specialized reference documents:

When Starting a New Project

Use Rust-Project-Setup.md for:

  • Creating new Rust CLI/TUI applications from scratch
  • Cargo.toml setup and dependency selection
  • Module structure and organization
  • System dependency documentation (ALSA, X11, OpenGL, etc.)
  • Configuration with serde/toml
  • README and documentation templates
  • Step-by-step implementation workflow

When Writing Code

Use Rust-Patterns.md for:

  • Trait-based abstractions for swappable implementations
  • Error handling (anyhow vs thiserror)
  • CLI argument parsing with clap
  • Structured logging with tracing
  • Frame timing and performance monitoring
  • Linux device I/O (v4l2, video processing)
  • Color space conversion (RGB to YUYV)
  • Testing patterns with mocks

Quick Reference

Error Handling Decision

Is this a library?
├─ Yes → Use thiserror for typed errors
└─ No (application) → Use anyhow with .context()

Common Dependencies

NeedCrateNotes
Error handling (app)anyhowFlexible, ergonomic
Error handling (lib)thiserrorTyped errors
CLI parsingclap v4Use derive feature
TUI frameworkratatuiWith crossterm
Configurationserde + tomlStandard approach
Async runtimetokioMost popular
HTTP clientreqwestHigh-level, async
LoggingtracingStructured logging

Cargo Commands

cargo check          # Fast compilation check
cargo build          # Debug build
cargo build --release # Optimized build
cargo test           # Run tests
cargo clippy         # Lint code
cargo fmt            # Format code
cargo doc --open     # Generate docs

Cargo.lock Decision

  • Applications/Binaries: Commit Cargo.lock (reproducible builds)
  • Libraries: Don't commit (let downstream decide versions)