Back to Cog

SKILL

.opencode/skills/rust-review/SKILL.md

0.19.31.8 KB
Original Source

Rust review guidelines

This project uses Rust for Coglet (crates/), the prediction server that runs inside Cog containers. It handles HTTP requests, worker process management, and prediction execution.

What linters already catch (skip these)

clippy runs in CI. cargo-deny audits dependencies for license/advisory issues. Don't flag issues these would catch.

What to look for

Error handling

  • Use thiserror for typed errors in library code, anyhow for application errors
  • Don't use .unwrap() or .expect() in non-test code unless the invariant is documented
  • Error context: use .context() or .with_context() from anyhow, not bare ?

Ownership and lifetimes

  • Unnecessary cloning where a borrow would work
  • Lifetime issues that suggest a design problem (not just annotation noise)
  • Arc/Mutex when simpler patterns exist

Async (tokio)

  • Blocking operations inside async contexts (use spawn_blocking)
  • Missing .await on futures (compiler catches some, but not all logical issues)
  • Proper cancellation handling and cleanup
  • Task/JoinHandle leaks

Safety

  • Any unsafe block needs justification and a safety comment
  • FFI boundaries with Python (PyO3) -- check for panics across FFI, GIL handling
  • Memory safety in IPC between parent and worker processes

Architecture

  • crates/coglet/ is the core: HTTP server, worker orchestration, IPC
  • crates/coglet-python/ is PyO3 bindings for Python predictor integration
  • Two-process architecture: parent (HTTP + orchestrator) and worker (Python execution)
  • Don't mix IPC concerns with HTTP handling
  • Snapshot tests use insta -- check if snapshots need updating

Dependencies

  • New dependencies should be justified -- crates/deny.toml audits them
  • Prefer std or existing deps over adding new ones for small tasks