playbook/outfitter-agents/plugins/outfitter/skills/architecture/references/rust-architecture.md

1.9 KiB

Rust Architecture

When to Choose Rust

Strong fit:

  • Performance-critical services (compute-heavy, low-latency)
  • Resource-constrained environments
  • Systems programming needs
  • Memory safety critical (no GC pauses)
  • Concurrent processing with correctness guarantees

May not be worth it:

  • Prototype/MVP stage (slower iteration)
  • Small team without Rust experience
  • Standard CRUD API (TS faster to develop)
  • Heavy dependency on ecosystem libraries only in other languages

Stack Recommendations

Web services

Component Recommendation
Runtime tokio (async runtime, de facto standard)
Web framework axum (modern, type-safe) or actix-web (mature, fast)
Database sqlx (compile-time checked), diesel (full ORM)
Serialization serde + serde_json, bincode for binary
Observability tracing + tracing-subscriber
Errors thiserror (libraries), anyhow (applications)

Project structure

my-service/
├── Cargo.toml          # Workspace manifest
├── crates/
│   ├── api/            # HTTP handlers, routing
│   ├── domain/         # Business logic, pure Rust
│   ├── persistence/    # Database access
│   └── common/         # Shared utilities

Operational considerations

  • Build times longer than TS (use sccache, mold linker)
  • Binary size larger (use cargo-bloat to analyze)
  • Memory usage lower at runtime
  • Deploy as single static binary (easy containerization)
  • Cross-compilation more complex

Tradeoffs vs TypeScript

Aspect Rust TypeScript
Memory 5-10x lower Higher
Execution 2-10x faster Slower
Bug detection Compile-time (null, races) Runtime possible
GC pauses None Yes
Development speed Slower (borrow checker) Faster iteration
Ecosystem Smaller for web Massive (npm)
Hiring Harder Easy