Skills DirectorySkills Directory
SkillsLearnSecurityCategoriesDocsCommunityBlog
Sign InSubmit Skill
Skills Directory

Security-tested agent skills for Claude, coding agents, and AI workflows.

Directory

  • Browse Skills
  • All Skills A–Z
  • Claude Skills
  • Claude Code Skills
  • Agent Skills
  • Categories
  • Submit a Skill

Learn

  • Learn Hub
  • Install Claude Skills
  • Write SKILL.md
  • Skills vs MCP
  • Directories Compared

Security

  • Security
  • Methodology
  • Secure Claude Skills
  • Security Badges

Company

  • About
  • Community
  • Blog
  • API Docs
  • Advertise

2026 Skills Directory. All rights reserved.

Back to skills

Rust Cargo Fast Iteration Profile

ASecurity

Speed up Rust development iteration when `cargo build --release` takes 10+ minutes even for one-line edits. Use when: (1) every release rebuild takes minutes despite tiny edits, (2) Cargo.toml has `lto = "fat"` and/or `codegen-units = 1` in `[profile.release]`, (3) you want a production- shaped build for testing without paying the LTO cost on every iteration, (4) you suspect cargo is re-linking the whole binary instead of doing incremental work, (5) developing rfdb/grafema-orchestrator/large ...

36 stars
0 votes
0 copies
0 views
Added 9/20/2026
datarustgobashtestingdocumentation

Works with

claude code

Security Analysis

A100/100

Scanned 9/20/2026

Install to Claude Code

$npx -y skills add Disentinel/grafema --skill rust-cargo-fast-iteration-profile --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Rust Cargo Fast Iteration Profile?

Add the live security badge to your README — it updates automatically with every re-scan.

Security grade badge for Rust Cargo Fast Iteration Profile
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/disentinel-rust-cargo-fast-iteration-profile/badge)](https://www.skillsdirectory.com/skills/disentinel-rust-cargo-fast-iteration-profile)

More formats (shields.io, HTML) on the badges page.

Download Zip
Files
SKILL.md
---
name: rust-cargo-fast-iteration-profile
description: |
  Speed up Rust development iteration when `cargo build --release` takes
  10+ minutes even for one-line edits. Use when: (1) every release rebuild
  takes minutes despite tiny edits, (2) Cargo.toml has `lto = "fat"` and/or
  `codegen-units = 1` in `[profile.release]`, (3) you want a production-
  shaped build for testing without paying the LTO cost on every iteration,
  (4) you suspect cargo is re-linking the whole binary instead of doing
  incremental work, (5) developing rfdb/grafema-orchestrator/large Rust
  binaries where full LTO is enabled for shipped builds. Adds a `fast`
  profile that inherits release but disables LTO, raises codegen-units,
  enables incremental compilation — first build still slow because it
  populates a fresh `target/fast/` dep cache, but every subsequent
  rebuild drops from ~13 min to ~13 s (≈60×).
author: Claude Code
version: 1.0.0
date: 2026-04-07
---

# Rust Cargo Fast Iteration Profile

## Problem

`cargo build --release` takes **12–15 minutes** for a single-line edit in
a Rust project. Hours of development time get burned waiting for a
binary that should rebuild in seconds.

The cause is almost always two settings in `Cargo.toml`:

```toml
[profile.release]
lto = "fat"          # Full link-time optimization across all crates
codegen-units = 1    # Single-threaded codegen, no parallelism
```

These are **correct for shipping**: they produce the smallest, fastest
binary. They are **disastrous for iteration** because every edit
triggers:

1. Re-codegen of the affected crate(s)
2. Re-link of the entire dependency graph through fat LTO
3. No parallel codegen (codegen-units=1)
4. No incremental compilation (release profile disables it)

The result: a one-character change in one source file forces ~minutes
of work even though the cached dependency `.rlib`s are still valid.

## Context / Trigger Conditions

- `cargo build --release` consistently takes >5 minutes for tiny edits.
- `Cargo.toml` contains `lto = "fat"` and/or `codegen-units = 1` under
  `[profile.release]`.
- Your dev loop is `edit → build → run rfdb-server / grafema-orchestrator
  → curl test → repeat`, and the build dominates wall-clock.
- You're afraid to make experimental changes because each iteration
  costs ~15 minutes.
- `target/release/incremental/` is empty or doesn't exist (release
  profile leaves it disabled by default).
- You see `Compiling rfdb v0.3.24` followed by a long pause every time
  even though only one file changed.

## Solution

### 1. Add a `fast` profile to `Cargo.toml`

Append a new profile that inherits release but flips the slow knobs:

```toml
# Fast iteration profile: ~30s rebuilds vs ~15min for full release.
# Use during development with `cargo build --profile fast`. Binary is
# slightly slower at runtime (no LTO, more codegen units) but the
# trade-off is enormous for the edit/test cycle.
[profile.fast]
inherits = "release"
opt-level = 2          # Drop from 3 → 2; 90 % of perf, way faster
lto = "off"            # Skip the multi-minute fat LTO link step
codegen-units = 16     # Parallel codegen across cores
incremental = true     # Reuse per-function compilation artifacts
debug = false          # Keep binary lean
```

`inherits = "release"` is required: it picks up everything from
`[profile.release]` and overrides only the listed keys.

### 2. Use it for development

```bash
# First build is still slow — populates target/fast/ from scratch
cargo build --profile fast --bin <your-bin>      # ~12 min

# Every subsequent rebuild is incremental
touch src/foo.rs
cargo build --profile fast --bin <your-bin>      # ~13 s
```

The binary lives at `target/fast/<bin>` (NOT `target/release/<bin>`).

### 3. Keep `--release` for shipping

Production builds, CI release artifacts, benchmarks etc. continue to
use `cargo build --release`. You're not changing what gets shipped —
just what you build during the edit/test loop.

## Verification

Measure both the cold and hot builds:

```bash
# Cold build (clean target/fast/)
cargo clean -p <pkg>
time cargo build --profile fast --bin <bin>
# → ~10–15 min on first run, similar to release

# Hot incremental rebuild
touch src/<changed-file>.rs
time cargo build --profile fast --bin <bin>
# → ~10–30 s for a single-file change
```

If the second build is still minutes:

- Confirm `inherits = "release"` is present and `incremental = true`
- Run with `CARGO_LOG=cargo::core::compiler::fingerprint=info` to see
  which fingerprints are dirty
- Check that you're not running `cargo build --release` and
  `cargo build --profile fast` interchangeably (each maintains its
  own target dir, so they invalidate each other's incremental cache)

## Example

In the grafema RFDB server (`packages/rfdb-server/Cargo.toml`),
release profile was:

```toml
[profile.release]
opt-level = 3
lto = "fat"
codegen-units = 1
```

A one-line edit in `src/http_server.rs` was rebuilding the binary in
**12–15 minutes**. After adding `[profile.fast]`:

```bash
$ touch src/http_server.rs
$ time cargo build --profile fast --bin rfdb-server
   Compiling rfdb v0.3.24
    Finished `fast` profile [optimized] target(s) in 13.00s
```

**13 seconds**. ~60× faster iteration. Run from
`target/fast/rfdb-server`.

## Notes

- **Disk cost**: `target/fast/` lives next to `target/release/` and is
  comparable in size (hundreds of MB to a few GB). Worth it.
- **Don't ship from `target/fast/`** — runtime perf is 10–20% slower
  than full release on hot paths because LTO is off and opt-level is 2.
- **Switching profiles invalidates the other's incremental cache**. If
  you alternate `--release` and `--profile fast`, both will be slow.
  Pick one for the dev loop and stick with it.
- **Linking time**: macOS `ld64` and Linux `ld.lld` benefit most from
  `lto = "off"`. The fat LTO link is the dominant time on a single-file
  change, not codegen.
- **`opt-level = 2` vs `0`**: `0` would be faster to build but the
  binary becomes painfully slow for any non-trivial workload (RFDB
  with `opt-level = 0` is roughly 10× slower than release). `2` is
  the sweet spot for "production-shaped but builds fast".
- **`debug = false`**: Without this, you also pay debug-info generation
  cost on each rebuild. Skip it unless you actually need symbols.
- **Alternative name**: some projects call this profile `dev-release`,
  `quick`, or `iter`. The name is arbitrary; only the keys matter.
- **Combine with `mold` or `lld`** linker for further linking
  speedups on Linux. macOS users get the system linker which is
  already reasonable.

## Related Files

- `packages/rfdb-server/Cargo.toml` — has the `fast` profile applied
- `packages/grafema-orchestrator/Cargo.toml` — has the same problem
  (lto=fat + codegen-units=1), apply the same fix when iterating on it

## References

- [Cargo Profiles documentation](https://doc.rust-lang.org/cargo/reference/profiles.html)
- [Profile inheritance via `inherits`](https://doc.rust-lang.org/cargo/reference/profiles.html#custom-profiles)
- [Incremental compilation](https://doc.rust-lang.org/cargo/reference/profiles.html#incremental)

Attribution

DisentinelDisentinel
View sourceMore from Disentinel →
SSkills DirectorySkills Directory

Your tool, in front of Claude Code builders.

3 founder slots · $299/mo · GSC-verified traffic · sponsors can never buy grades.

See placements

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments (0)

No comments yet. Be the first to comment!

SSkills DirectorySkills Directory

Your tool, in front of Claude Code builders.

3 founder slots · $299/mo · GSC-verified traffic · sponsors can never buy grades.

See placements

Related Skills

Rank Tracker

This skill helps you track, analyze, and report on keyword ranking positions over time. It monitors both traditional SERP rankings and AI/GEO visibility to provide comprehensive search performance insights.

1821 votes

Youtube Competitor Analyzer

Find and analyze YouTube competitor channels using YouTube Data API v3. Discover competitors through keyword search, category matching, content similarity, and related channel discovery. Compare metrics, content strategies, and market positioning. Use when users want to (1) Find competitors for their YouTube channel, (2) Analyze competitor performance metrics, (3) Compare their channel against competitors, (4) Identify content gaps and opportunities, (5) Benchmark against similar creators, (6...

31 votes

Twitter Algorithm Optimizer

Analyze and optimize tweets for maximum reach using Twitter's open-source algorithm insights. Rewrite and edit user tweets to improve engagement and visibility based on how the recommendation system ranks content.

742580 votes

Weather Fetcher

Instructions for fetching current weather temperature data for Karachi, Pakistan from wttr.in API

655280 votes

Weather

Get current weather and forecasts (no API key required).

476190 votes
View all in data →