Rust Development with Claude Code | Clippy Integration and CLAUDE.md Configuration
"When I have Claude write Rust, it keeps getting stuck on ownership errors" — this is a frustration shared by many developers. Rust's borrow checker and strict type system make it one of the more challenging languages for AI-assisted coding. That said, the coding capabilities of the Opus 4.8 generation have reached practical levels, and with the right configuration, Claude can become a powerful partner for Rust development. This article walks through environment setup, how to write your CLAUDE.md, and how to build quality gates when writing Rust with Claude Code — complete with real-world examples.
目次 (8)
- Why Claude Code × Rust Is Getting Attention Now
- What Claude Code Is Good and Not Good at in Rust
- Environment Setup: Connecting cargo with Claude Code
- Writing Rust Conventions in CLAUDE.md
- Quality Gates: Run fmt / clippy / test Every Time
- Tips for Fixing Ownership and Borrow Errors
- Faster Builds: sccache and mold
- Summary
Why Claude Code × Rust Is Getting Attention Now
Anthropic positions Opus 4.8 as an "upgrade across coding, agentic tasks, and specialized work" (Anthropic official). In practice, on SWE-Bench Pro — an agentic coding evaluation that involves reading real GitHub Issues and passing unit tests across multiple files — Opus 4.8 scored 69.2%, up from the previous generation's Opus 4.7 score of 64.3% (labellerr verification).
A notable real-world Rust example is Bun developer Jarred Sumner's effort to port the Bun codebase from Zig to Rust. The project spanned 750,000 lines of code and was completed in 11 days from the first commit to merge, with a test pass rate of 99.8% (summary by digitalapplied). This is a striking illustration of how large-scale Rust migration is becoming a realistic option.
What Claude Code Is Good and Not Good at in Rust
Let's first acknowledge the limitations. According to observations from developers who have actually written Rust with Claude, the language's demand for "strict correctness" means that even small mistakes prevent compilation, which can slow down AI-assisted workflows (article by Sam Van Overmeire).
- Strengths: Performance-critical systems, low-level programming, domains with tight memory management. Tasks with clear specifications where correctness can be determined mechanically through tests.
- Weaknesses / Caution: Cases where someone who doesn't yet understand the language uses Claude to "just get it running fast." Rust is a precision tool, and for rapid prototyping, other languages are sometimes faster.
In short, Claude Code works best when used to "multiply the capacity of someone who already understands Rust."
Environment Setup: Connecting cargo with Claude Code
Set up your environment in the following order:
- Install the Rust toolchain via
rustupand verify withcargo --version. - Install
rust-analyzerin your editor so type information and errors appear in real time. - Launch Claude Code inside your project directory and make sure
cargo buildpasses before submitting any tasks. - Have Claude read your
Cargo.tomldependencies and minimal structure so it understands the current state before handing off tasks.
Having a clean, building baseline prepared upfront lets Claude compare compilation results before and after changes, improving the accuracy of its fixes.
Writing Rust Conventions in CLAUDE.md
The highest-impact step is documenting your project's conventions, naming rules, and design decisions in CLAUDE.md. The AI will follow the rules written there (rust-coding-standards skill). Key items to include for Rust:
- Prefer early returns to keep nesting shallow.
- Explicitly state how ownership, borrowing, and references should be handled, and avoid unnecessary
clone()calls. - Use
anyhowandthiserrorappropriately for error handling, and return structured error types. - Prioritize type safety over primitive types; design APIs that cannot represent invalid states (using Builder, Newtype, and
#[must_use]). - Enable all Clippy lints and make zero warnings a commit requirement.
Keeping these rules as bullet points dramatically reduces the amount of rework needed on Claude's first drafts.
Quality Gates: Run fmt / clippy / test Every Time
Set up a workflow where Claude runs three commands after every change so it can verify its own output (explanation by Tigran.tech):
- Run
cargo fmtto format code and keep diffs free of style noise. - Run
cargo clippy -- -W clippy::all(or a stricter configuration) to lint. - Run
cargo testto pass unit tests.
The trick is to configure Clippy on the stricter side. The more feedback it provides, the more Claude can use it as a signal for self-correction. The key is to create a state where machines can verify correctness before a human ever needs to review.
Tips for Fixing Ownership and Borrow Errors
When you get stuck on borrow checker errors, paste the full error message to Claude and have it articulate which lifetimes are in conflict before proposing a fix. Asking it to reason from the compiler's output — rather than vaguely saying "fix this" — helps avoid a cascade of unnecessary clone() calls. Even for changes that span multiple files, keeping the scope small and advancing incrementally to where tests pass leads to more stable results.
Faster Builds: sccache and mold
Rust compilation is heavy, and build time becomes a bottleneck in a development workflow where AI and human iterate frequently. Introducing sccache for compilation caching and mold as a linker significantly reduces wait time on each iteration (rust-development-workflow skill). The more often you delegate changes and verification to Claude, the more this difference compounds.
Summary
The key to writing Rust with Claude Code is not to leave everything to the model, but to establish an environment where machines can determine correctness.
- Document ownership, error handling, and type safety conventions in
CLAUDE.md. - Run
cargo fmt/clippy/testafter every change to enable self-verification. - For borrow errors, have Claude reason from the full error message and fix in small, incremental steps.
Rust is not a language for "writing fast and loose," but with solid conventions and quality gates in place, the Opus 4.8 generation of Claude becomes a practical partner even for Rust's strict type system.