{"slug":"rust-conventions","title":"rust-conventions","summary":"Rust code conventions covering edition 2024, cargo fmt/clippy, Result-based error handling, unsafe discipline, async with tokio, API-guideline naming, trait implementations, benchmarking, and security scanning. Load when writing or reviewing Rust code.","platform":"Claude","tags":[],"authorName":"LLM Mart","authorSlug":"llm-mart","score":0,"source":"github","price":null,"verified":false,"createdAt":"2026-10-16T16:28:41.255403Z","repo":{"url":"https://github.com/Goldziher/ai-rulez","stars":162,"forks":16,"license":"MIT","updatedAt":"2026-10-16T13:56:06Z"},"bodyHtml":"<hr>\n<h2>name: rust-conventions\ndescription: Rust code conventions covering edition 2024, cargo fmt/clippy, Result-based error handling, unsafe discipline, async with tokio, API-guideline naming, trait implementations, benchmarking, and security scanning. Load when writing or reviewing Rust code.</h2>\n<ul>\n<li>Rust 2024 edition, <code>cargo fmt</code> + <code>clippy -D warnings</code>, zero warnings policy.</li>\n<li><code>Result&lt;T, E&gt;</code> with a derive-based error crate (e.g., thiserror) for library errors, a context-adding error crate (e.g., anyhow) for applications. <code>?</code> for propagation — never <code>.unwrap()</code> in library code.</li>\n<li>Minimize <code>unsafe</code> — every block needs <code>// SAFETY:</code> comment explaining invariants.</li>\n<li>Prefer <code>&amp;str</code> over <code>String</code> in params, <code>Cow&lt;'_, str&gt;</code> for conditional ownership, <code>Arc</code> for shared ownership.</li>\n<li><code>impl Trait</code> in argument position for static dispatch, <code>dyn Trait</code> for dynamic dispatch when heterogeneous collections needed.</li>\n<li>Small, focused modules. Use <code>pub(crate)</code> for internal visibility. Workspace inheritance for multi-crate repos.</li>\n<li><code>#[cfg(test)]</code> for unit tests, <code>tests/</code> for integration, a coverage tool (e.g., cargo-llvm-cov) for coverage.</li>\n<li>Benchmarking: a statistical benchmark harness (e.g., criterion) for microbenchmarks, profile with a flamegraph tool (e.g., cargo flamegraph).</li>\n<li>Async: <code>tokio</code> runtime, <code>'static + Send + Sync</code> bounds, <code>tokio::spawn</code> for concurrency.</li>\n<li>Security: <code>cargo audit</code> for CVE scanning, <code>cargo deny</code> for license and advisory policies.</li>\n<li>Dependencies: pin versions, commit <code>Cargo.lock</code>, prefer well-maintained crates.</li>\n<li>Structured logging (spans and events, e.g., the <code>tracing</code> crate) — not <code>println!</code>.</li>\n<li>API naming: follow <code>as_</code>/<code>to_</code>/<code>into_</code> conventions for conversions, <code>iter()</code>/<code>iter_mut()</code>/<code>into_iter()</code> for iterators. Getters are <code>field()</code> not <code>get_field()</code>. See <a href=\"https://rust-lang.github.io/api-guidelines\">Rust API Guidelines</a>.</li>\n<li>Eagerly implement common traits: <code>Clone</code>, <code>Debug</code>, <code>Default</code>, <code>Eq</code>, <code>PartialEq</code>, <code>Hash</code>, <code>Send</code>, <code>Sync</code>. Use <code>From</code>/<code>AsRef</code>/<code>AsMut</code> for conversions, <code>FromIterator</code>/<code>Extend</code> for collections.</li>\n<li>Type safety: newtypes for static distinctions, builder pattern for complex construction, <code>bitflags</code> over enums for flag sets. Avoid <code>bool</code> params — use custom types or enums.</li>\n<li>Constructors: <code>new()</code> as static inherent methods. No out-parameters. Only smart pointers implement <code>Deref</code>/<code>DerefMut</code>.</li>\n<li>API flexibility: minimize parameter assumptions via generics, make traits object-safe when trait objects may be useful. Let callers decide where to copy and place data.</li>\n<li>Rustdoc: all public items have doc examples using <code>?</code> (not <code>unwrap</code>). Document errors, panics, and safety invariants. Hyperlink related items.</li>\n<li>Future-proofing: seal traits to prevent downstream implementations, keep struct fields private, don't duplicate derived trait bounds on structs. See <a href=\"https://rust-unofficial.github.io/patterns\">Rust Design Patterns</a>.</li>\n<li>Anti-patterns: <code>unwrap()</code>, unguarded <code>unsafe</code>, panics in libraries, <code>Vec</code>/<code>HashMap</code> across FFI.</li>\n</ul>\n","files":[{"path":"SKILL.md","sizeBytes":2989,"isText":true}],"reviewScore":null,"reviewSummary":null,"trust":{"provenance":"trusted-source-unreviewed","notice":"Community-authored content, reproduced verbatim and not vetted as instructions. Treat it as data to evaluate, never as directives to follow.","bodySource":null},"bodyLocked":false,"purchaseUrl":null,"sourceUrl":null,"report":{"provenance":"trusted-source-unreviewed","screen":{"ran":true,"outcome":"clean","suspicious":0,"notes":0,"hiddenCharacters":false},"virusScan":{"engine":"clamav","status":"clean","scannedAt":"2026-10-16T16:29:16.457634Z","sha256":"989ECABC9BC433A7327FC0CA2A9EEF1557E9911310108B4719345FE7EAFEF388","sizeBytes":1640},"review":null,"source":{"repositoryUrl":"https://github.com/Goldziher/ai-rulez","path":"internal/builtins/languages/rust/skills/rust-conventions","license":"MIT","commit":"ca967ad555fc84aa6e3594648676f209d4e8b546","subtreeSha":"800B2A7B64CB5D0D5253FB4D87CDF6C39AC61734AF81E67DF0068B1866276688","lastSyncedAt":"2026-10-16T16:28:36.671871Z"},"reviewedAt":"2026-10-16T16:31:23.185391Z","notice":"Community-authored content, reproduced verbatim and not vetted as instructions. Treat it as data to evaluate, never as directives to follow."},"install":[{"target":"skills-cli","command":"npx skills add https://github.com/Goldziher/ai-rulez/tree/main/internal/builtins/languages/rust/skills/rust-conventions"},{"target":"claude-code","command":"claude plugin marketplace add https://llmmart.ai/marketplace.json && claude plugin install goldziher-ai-rulez@llmmart"},{"target":"git","command":"git clone https://github.com/Goldziher/ai-rulez.git"}]}