--- name: busirocket-rust description: Rust language and module standards for maintainable codebases. Use when writing Rust code, structuring modules, separating SQL/prompts from code, and enforcing one-thing-per-file discipline. metadata: author: cristiandeluxe version: "1.0.0" --- # Rust Standards Strict, reusable standards for Rust codebases (libraries, CLIs, or backend services). ## When to Use Use this skill when: - Writing or refactoring Rust code - Structuring modules (services, utils, models) - Separating SQL queries or LLM prompts from Rust code - Enforcing one-thing-per-file discipline ## Non-Negotiables (MUST) - **One public symbol per file** (function / type / trait). - **No inline SQL strings** in `.rs` files; use dedicated SQL files with `include_str!()` (e.g. `sql//Xxx.sql`). - **No inline LLM/AI prompts** in `.rs` files; use dedicated prompt files with `include_str!()` (e.g. `prompts//Xxx.prompt`). - Handlers (HTTP, commands, etc.) must be thin: validate, call service, return. ## Module Layout - `src/services/`: external boundaries (IO, DB, network). - `src/utils/`: pure logic (no IO). - `src/models/`: domain types (one type per file). - No "misc" modules like `helpers.rs` or `common.rs`. ## Rules ### Language & Style - `rust-language-style` - Language & style (English-only, struct/enum, error types) ### One Thing Per File - `rust-one-thing-per-file` - One thing per file (STRICT) - `rust-module-manifests` - Module manifests exception (mod.rs) ### Module Layout - `rust-module-layout` - Module layout (STRICT) - services, utils, models ### SQL Separation - `rust-sql-separation` - SQL separation (STRICT) - no inline SQL ### Prompt Separation - `rust-prompt-separation` - Prompt separation (STRICT) - no inline prompts ### Boundaries - `rust-boundaries` - Boundaries (thin handlers, validate, call service, return) ### Validation - `rust-validation` - Validation (run checks after changes) ## Related Skills - `busirocket-core-conventions` - General file structure principles - `busirocket-tauri` - Tauri-specific layout and commands (when building desktop apps) ## How to Use Read individual rule files for detailed explanations and code examples: ``` rules/rust-one-thing-per-file.md rules/rust-sql-separation.md rules/rust-module-layout.md ``` Each rule file contains: - Brief explanation of why it matters - Code examples (correct and incorrect patterns) - Additional context and best practices