AgentSkillsCN

Rust

Rust开发模式、项目设置、CLI/TUI应用、错误处理和系统集成

SKILL.md
--- frontmatter
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
  • Typestate pattern for security-sensitive state machines (compile-time state enforcement)
  • 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
  • Defensive programming patterns

Quick Reference

Error Handling Decision

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

State Machine Decision

code
Is this security-sensitive? (auth, crypto, transactions)
├─ Yes → Use TYPESTATE pattern (compile-time enforcement)
│        - State encoded in type system
│        - Invalid transitions = compile errors
│        - Methods only exist for valid states
└─ No → Runtime enums are fine
         - UI state, display modes
         - States that need runtime inspection

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

bash
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)