rust-best-practices
Guide for writing idiomatic Rust code based on Apollo GraphQL's best practices handbook.
Skill by apollographql
Install
Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.
npx agentmarket install skill/kkingsbe-rust-best-practices
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Use cases: backend, writing
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions: not checked yet.
What's inside
- Skill name
rust-best-practices- Description
- Guide for writing idiomatic Rust code based on Apollo GraphQL's best practices handbook. Use this skill when: (1) writing new Rust code or functions, (2) reviewing or refactoring existing Rust code, (3) deciding between borrowing vs cloning or ownership patterns, (4) implementing error handling with Result types, (5) optimizing Rust code for performance, (6) writing tests or documentation for Rust projects.
- License
- MIT
- Compatibility
- Rust 1.70+, Cargo
- Allowed tools
- Bash(cargo:*), Bash(rustc:*), Bash(rustfmt:*), Bash(clippy:*), Read, Write, Edit, Glob, Grep
- Metadata
- author: apollographql · version: 1.1.0
- Instructions
- 78 lines in SKILL.md · view on GitHub
Before installing
- Pre-approves some shell commands
Files (10)
- SKILL.md
- chapter_01.md · references/
- chapter_02.md · references/
- chapter_03.md · references/
- chapter_04.md · references/
- chapter_05.md · references/
- chapter_06.md · references/
- chapter_07.md · references/
- chapter_08.md · references/
- chapter_09.md · references/
SKILL.md (first lines)
---
name: rust-best-practices
description: >
Guide for writing idiomatic Rust code based on Apollo GraphQL's best practices handbook. Use this skill when:
(1) writing new Rust code or functions,
(2) reviewing or refactoring existing Rust code,
(3) deciding between borrowing vs cloning or ownership patterns,
(4) implementing error handling with Result types,
(5) optimizing Rust code for performance,
(6) writing tests or documentation for Rust projects.
license: MIT
compatibility: Rust 1.70+, Cargo
metadata:
author: apollographql
version: "1.1.0"
allowed-tools: Bash(cargo:*) Bash(rustc:*) Bash(rustfmt:*) Bash(clippy:*) Read Write Edit Glob Grep
---
# Rust Best Practices
Apply these guidelines when writing or reviewing Rust code. Based on Apollo GraphQL's [Rust Best Practices Handbook](https://github.com/apollographql/rust-best-practices).
## Best Practices Reference
Before reviewing, familiarize yourself with Apollo's Rust best practices. Read ALL relevant chapters in the same turn in parallel. Reference these files when providing feedback:
- [Chapter 1 - Coding Styles and Idioms](references/chapter_01.md): Borrowing vs cloning, Copy trait, Option/Result handling, iterators, comments
- [Chapter 2 - Clippy and Linting](references/chapter_02.md): Clippy configuration, important lints, workspace lint setup
- [Chapter 3 - Performance Mindset](references/chapter_03.md): Profiling, avoiding redundant clones, stack vs heap, zero-cost abstractions
- [Chapter 4 - Error Handling](references/chapter_04.md): Result vs panic, thiserror vs anyhow, error hierarchies
- [Chapter 5 - Automated Testing](references/chapter_05.md): Test naming, one assertion per test, snapshot testing
- [Chapter 6 - Generics and Dispatch](references/chapter_06.md): Static vs dynamic dispatch, trait objects
- [Chapter 7 - Type State Pattern](references/chapter_07.md): Compile-time state safety, when to use it
- [Chapter 8 - Comments vs Documentation](references/chapter_08.md): When to comment, doc comments, rustdoc
- [Chapter 9 - Understanding Pointers](references/chapter_09.md): Thread safety, Send/Sync, pointer types
## Quick Reference
### Borrowing & Ownership
- Prefer `&T` over `.clone()` unless ownership transfer is required
- Use `&str` over `String`, `&[T]` over `Vec<T>` in function parameters
- Small `Copy` types (≤24 bytes) can be passed by value
- Use `Cow<'_, T>` when ownership is ambiguous
### Error Handling
- Return `Result<T, E>` for fallible operations; avoid `panic!` in production
- Never use `unwrap()`/`expect()` outside tests
- Use `thiserror` for library errors, `anyhow` for binaries only
- Prefer `?` operator over match chains for error propagation
### Performance
- Always benchmark with `--release` flag
- Run `cargo clippy -- -D clippy::perf` for performance hints
- Avoid cloning in loops; use `.iter()` instead of `.into_iter()` for Copy types
- Prefer iterators over manual loops; avoid intermediate `.collect()` calls
### Linting
Run regularly: `cargo clippy --all-targets --all-features --locked -- -D warnings`
Key lints to watch:
- `redundant_clone` - unnecessary cloning
- `large_enum_variant` - oversized variants (consider boxing)
- `needless_collect` - premature collection
Use `#[expect(clippy::lint)]` over `#[allow(...)]` with justification comment.
### Testing
- Name tests descriptively: `process_should_return_error_when_input_empty()`
- One assertion per test when possible
- Use doc tests (`///`) for public API examples
- Consider `cargo insta` for snapshot testing generated output
### Generics & Dispatch
- Prefer generics (static dispatch) for performance-critical code
- Use `dyn Trait` only when heterogeneous collections are needed
- Box at API boundaries, not internally
### Type State Pattern
Encode valid states in the type system to catch invalid operations at compile time:
```rust
struct Connection<State> { /* ... */ _state: PhantomData<State> }
struct Disconnected;
struct Connected;
impl Connection<Connected> {
fn send(&self, data: &[u8]) { /* only connected can send */ }
}
```
### Documentation
- `//` comments explain *why* (safety, workarounds, design rationale)
- `///` doc comments explain *what* and *how* for public APIs
- Every `TODO` needs a linked issue: `// TODO(#42): ...`
- Enable `#![deny(missing_docs)]` for librariesFrom kkingsbe/switchboard-rs-oss, MIT.
More from kkingsbe/switchboard-rs-oss
- 0.413score
another-skill
kkingsbe
Another test skill for backwards compatibility testing
SkillDFreshness: D★ 1Claude Code +9 - 0.353score
rust-engineer
https://github.com/Jeffallan
Use when building Rust applications requiring memory safety, systems programming, or zero-cost abstractions.
SkillDFreshness: D★ 1Claude Code +9 - 0.231score
repo2
kkingsbe
Test skill repo2
SkillDFreshness: D★ 1Claude Code +9 - 0.231score
skill-name
kkingsbe
Test skill skill-name
SkillDFreshness: D★ 1Claude Code +9 - 0.231score
repo
kkingsbe
Test skill repo
SkillDFreshness: D★ 1Claude Code +9 - 0.231score
repo1
kkingsbe
Test skill repo1
SkillDFreshness: D★ 1Claude Code +9 - 0.231score
repo3
kkingsbe
Test skill repo3
SkillDFreshness: D★ 1Claude Code +9 - 0.230score
test-skill
kkingsbe
A test skill for backwards compatibility testing
SkillDFreshness: D★ 1Claude Code +9
Signals
- Stars
- 1
- Forks
- 0
- Open issues
- 0
- Last commit (this folder)
- Feb 27, 2026 (8 months ago)
From GitHub (fetched Oct 24, 2026).
Details
- Version
- 1.1.0
- License
- MIT
- Repository
- github.com/kkingsbe/switchboard-rs-oss
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
Same skill elsewhere
Copies of this SKILL.md published by others; search shows only one of them.
- 0.522score
rust-best-practices
apollographql
Guide for writing idiomatic Rust code based on Apollo GraphQL's best practices handbook.
SkillDFreshness: D★ 85Claude Code +9 - 0.355score
rust-best-practices
apollographql
Guide for writing idiomatic Rust code based on Apollo GraphQL's best practices handbook.
SkillBFreshness: B★ 13Claude Code +9 - 0.314score
rust-best-practices
apollographql
Guide for writing idiomatic Rust code based on Apollo GraphQL's best practices handbook.
SkillCFreshness: C★ 4Claude Code +9
More from apollographql
- 0.740score
rust-best-practices
apollographql
Idiomatic Rust guide based on Apollo GraphQL's best practices handbook.
SkillBFreshness: B★ 125Claude Code +9 - 0.725score
Apollo MCP Server
apollographql
MCP server that exposes GraphQL operations as tools for AI models.
ConnectorAFreshness: ALocal★ 317Claude Code +5 - 0.689score
CLAUDE.md · apollographql/apollo-client
apollographql
CLAUDE.md from apollographql/apollo-client: 140 lines covering Apollo Client Overview, Common Development Commands, High-Level Architecture, Additional…
TemplateAFreshness: A★ 19.8KClaude Code - 0.522score
rust-best-practices
apollographql
Guide for writing idiomatic Rust code based on Apollo GraphQL's best practices handbook.
SkillDFreshness: D★ 85Claude Code +9 - 0.520score
GraphOS MCP Server
apollographql
Search Apollo docs, specs, and best practices
ConnectorBFreshness: BRemoteClaude Code +3 - 0.479score
apollo-server
apollographql
Guide for building GraphQL servers with Apollo Server 5.x.
SkillCFreshness: CClaude Code +9
Cite this page
rust-best-practices skill. Agent Mart. https://agentmart.dev/skills/kkingsbe-rust-best-practices (last updated 2026-10-24)