Toolchain & Version Management
2Installing, switching, and managing Rust toolchains and components.
| Tool | Notes | Downloads | Stars | Updated | Status |
|---|---|---|---|---|---|
| cargo-binstall cargo-bins/cargo-binstall by Félix Saparelli, ryan, Jiahao XU, Binstall |
Installs Rust binaries from pre-built GitHub release artifacts instead of
compiling from source, turning a multi-minute Reach for it in CI and on dev machines to install tools fast. Skip it if you
need a build from source for provenance/audit reasons, or for crates that ship
no release binaries (where it gains you nothing over alternatives cargo-installcargo-quickinstall |
100.4k | 2.7k | 6d ago | Maintained |
| rustup rust-lang/rustup |
The official Rust toolchain installer and version manager. Installs and
switches between stable, beta, and nightly toolchains, manages components
(clippy, rustfmt, rust-src) and cross-compilation targets, and pins a
per-project toolchain via Effectively mandatory: almost every other tool here assumes a rustup-managed toolchain. The only time you'd skip it is a fully pinned distro/Nix or CI image that provisions toolchains some other way. alternatives rustup-toolchain-install-masterNix (oxalica/rust-overlay) |
— | 6.9k | 1d ago | Maintained |
Build & Compilation
2Speeding up, caching, and customizing the build itself.
| Tool | Notes | Downloads | Stars | Updated | Status |
|---|---|---|---|---|---|
| cargo-chef LukeMathWalker/cargo-chef by Luca Palmieri |
Speeds up Docker builds by caching your dependency compilation as a separate,
stable image layer. It computes a Specifically a Docker/CI optimization. It does nothing for local alternatives sccacheDocker BuildKit cache mounts |
622.3k | 2.6k | 1mo ago | Maintained |
| sccache mozilla/sccache by Ted Mielczarek, Bernhard Schuster, Igor Matuszewski, Mike Hommey, Sylvestre Ledru |
A compiler cache (think Big wins on CI and large teams. Less useful for a single dev with a warm local
alternatives Cargo incremental compilationcargo-chef (Docker layer caching) |
108.3k | 7.3k | today | Maintained |
Cargo Extensions
2General-purpose cargo subcommands that smooth day-to-day workflows.
| Tool | Notes | Downloads | Stars | Updated | Status |
|---|---|---|---|---|---|
| cargo-edit killercup/cargo-edit by Pascal Hertleif, Ed Page, Benjamin Gill, ordian |
Adds dependency-editing subcommands to Cargo. Mostly you only need it today for alternatives cargo add (built-in)cargo-upgradescargo-set-version |
542.0k | 3.4k | 1w ago | Maintained |
| cargo-watch watchexec/cargo-watch by Félix Saparelli, maintainers |
Watches your source tree and re-runs a cargo command ( Deprecated: the project is archived and no longer maintained. For a Rust-aware watch loop with a clean rendered TUI use bacon; for a general-purpose, language-agnostic watcher use watchexec (which now absorbs cargo-watch's maintainers). Don't start new projects on cargo-watch. use instead baconwatchexec |
155.2k | 2.9k | 1y ago | Deprecated |
Dependency Management
5Inspecting, updating, auditing, and pruning your dependency tree.
| Tool | Notes | Downloads | Stars | Updated | Status |
|---|---|---|---|---|---|
| cargo-machete bnjbvr/cargo-machete by Benjamin Bouvier |
Finds dependencies declared in Because the analysis is heuristic (text-based), it can produce false positives
for crates used only via macros or re-exports; mark those with
alternatives cargo-udeps |
361.7k | 1.3k | 1d ago | Maintained |
| cargo-udeps est31/cargo-udeps by est31 |
Finds unused dependencies by inspecting actual compiler output, so it knows which crates were genuinely linked rather than guessing from source text. This makes it more accurate than heuristic scanners, catching cases that pure text analysis misses and avoiding some false positives. The tradeoff is that it requires a nightly toolchain and a full build, so it is
slower. If you want a stable, fast check for everyday CI, prefer
alternatives cargo-machete |
104.8k | 2.1k | 1mo ago | Maintained |
| cargo-outdated kbknapp/cargo-outdated by Kevin K. |
Displays a table of dependencies that have newer versions available, comparing
what is resolved in Run alternatives cargo-upgradescargo-edit |
72.3k | 1.4k | 3d ago | Maintained |
| cargo-upgrades gitlab.com/kornelski/cargo-upgrades by Kornel |
Checks which dependencies can be upgraded to newer SemVer-incompatible versions, accounting for the whole dependency graph so it only suggests upgrades that can actually resolve. This avoids the false positives you get from naively comparing against the latest crates.io release. Use it as a sanity check before bumping version requirements. It reports only;
pair it with alternatives cargo-outdatedcargo-edit |
3.8k | 17 | 3w ago | Maintained |
| cargo-tree sfackler/cargo-tree by Steven Fackler |
ARCHIVED. This standalone subcommand visualized the dependency graph as a tree and helped track down where a transitive crate or duplicate version came from. Its functionality was upstreamed into Cargo itself starting with Rust 1.44. Do not install this crate anymore: run the built-in use instead cargo tree (built-in) |
13.7k | 531 | 6y ago | Deprecated |
Testing & Coverage
6Test runners, coverage, property testing, fuzzing, and snapshots.
| Tool | Notes | Downloads | Stars | Updated | Status |
|---|---|---|---|---|---|
| proptest proptest-rs/proptest by Mazdak Farrokhzad, Jason Lingle, publish |
A property-based testing library: instead of hand-writing example inputs, you
describe properties that should hold for all inputs and let Its alternatives quickcheck |
33.1M | 2.2k | 1w ago | Maintained |
| insta mitsuhiko/insta by Armin Ronacher, Maximilian Roos |
A snapshot testing library that records the output of a value (debug, JSON, YAML, RON, or plain strings) to a file and fails when it later changes. This is ideal for asserting on large or structured outputs where writing explicit expected values by hand is tedious. Its companion |
17.5M | 2.9k | 1d ago | Maintained |
| cargo-nextest nextest-rs/nextest by Rain, Nextest Bot |
A next-generation test runner that executes each test in its own process for
isolation, runs them in parallel with a clean summary output, and is typically
faster than Run it with alternatives cargo test (built-in) |
1.5M | 3.0k | today | Maintained |
| cargo-llvm-cov taiki-e/cargo-llvm-cov by Taiki Endo |
Collects source-based code coverage using LLVM's instrumentation
( It works across the major platforms Rust's LLVM coverage supports and is the
current go-to for accurate coverage. It needs the alternatives cargo-tarpaulin |
954.0k | 1.4k | 1d ago | Maintained |
| cargo-fuzz rust-fuzz/cargo-fuzz by Corey Farwell, Nick Fitzgerald, Simonas Kazlauskas, Manish Goregaokar, Publishers |
Scaffolds and drives coverage-guided fuzzing targets backed by libFuzzer. You
write a It links libFuzzer through the compiler's sanitizer support and therefore
requires a nightly toolchain. For an AFL-style engine instead, see the alternatives afl |
672.8k | 1.8k | 1w ago | Maintained |
| cargo-tarpaulin xd009642/tarpaulin by xd009642 |
A code coverage tool for Rust that reports line coverage and uploads cleanly to
services like Codecov and Coveralls. It was the long-standing default for CI
coverage and remains widely used and simple to invoke with Its mature Ptrace-based engine is Linux/x86_64-focused, though it now also
offers an LLVM-based backend. If you need accurate source-based coverage across
more platforms, alternatives cargo-llvm-cov |
301.5k | 3.0k | 3d ago | Maintained |
Linting & Correctness
2Catching bugs, anti-patterns, and style issues before review.
| Tool | Notes | Downloads | Stars | Updated | Status |
|---|---|---|---|---|---|
| cargo-semver-checks obi1kenobi/cargo-semver-checks by Predrag Gruevski |
Lints a crate's public API for SemVer-violating changes between releases, catching breaking changes that would require a major version bump. Run alternatives clippy |
74.9k | 1.6k | 4d ago | Maintained |
| clippy rust-lang/rust-clippy |
The official Rust linter, providing 700+ lints that catch correctness issues,
performance pitfalls, and unidiomatic code beyond what Installed as a rustup component with alternatives cargo-semver-checks |
— | 13.2k | today | Maintained |
Formatting
2Consistent, automatic code and config formatting.
| Tool | Notes | Downloads | Stars | Updated | Status |
|---|---|---|---|---|---|
| taplo tamasfe/taplo by Ferenc Tamás, JounQin |
A TOML toolkit providing a formatter, linter, and language server for TOML files
such as Install with the alternatives rustfmt |
169.1k | 2.3k | 2mo ago | Maintained |
| rustfmt rust-lang/rustfmt |
The official Rust code formatter, applying a consistent style across a codebase so diffs stay focused on real changes rather than whitespace. Installed as a rustup component with alternatives taplo |
— | 6.9k | 2d ago | Maintained |
Security & Supply Chain
5Vulnerability scanning, license/policy enforcement, and audits.
| Tool | Notes | Downloads | Stars | Updated | Status |
|---|---|---|---|---|---|
| cargo-audit rustsec/rustsec by Alex Gaynor, Tony Arcieri, Dirkjan Ochtman, Sergey "Shnatsel" Davidoff, Working Group |
Scans Run alternatives cargo-denycargo-vet |
2.0M | 1.9k | today | Maintained |
| cargo-deny EmbarkStudios/cargo-deny by embark-studios |
A policy linter for your dependency graph, checking security advisories, license compliance, banned or duplicate crates, and allowed source registries. Configure rules in alternatives cargo-auditcargo-vet |
916.4k | 2.3k | 1w ago | Maintained |
| cargo-auditable rust-secure-code/cargo-auditable by Tony Arcieri, Sergey "Shnatsel" Davidoff |
Embeds the exact dependency list into compiled binaries so they can be audited
after the fact, even without the original source or Build with alternatives cargo-audit |
144.7k | 827 | 1w ago | Maintained |
| cargo-vet mozilla/cargo-vet by Nika Layzell, Bobby Holley |
A supply-chain tool to record and enforce that each dependency has been human-reviewed, storing audit records that can be shared across an organization. Run alternatives cargo-auditcargo-deny |
63.4k | 950 | 1mo ago | Maintained |
| cargo-geiger geiger-rs/cargo-geiger by Tony Arcieri, anderejd, pinkforest(she/her), publish-rs, publish |
Audits your dependency tree for Treat the counts as a heuristic, not a verdict: alternatives cargo-auditcargo-deny |
36.0k | 1.6k | 4mo ago | Maintained |
Performance & Profiling
4Benchmarking, profiling, and finding what's slow.
| Tool | Notes | Downloads | Stars | Updated | Status |
|---|---|---|---|---|---|
| criterion bheisler/criterion.rs by Berkus Decker, Brook Heisler, David Himmelstrup, maintainers |
A statistics-driven microbenchmarking library for in-process Rust functions. It collects many samples, estimates confidence intervals, and detects performance regressions between runs, all on stable Rust. Prefer it over the unstable built-in alternatives divanhyperfine |
41.0M | 5.5k | 1mo ago | Maintained |
| cargo-flamegraph flamegraph-rs/flamegraph by Tyler Neely, Dirkjan Ochtman, maintainers |
Generates flamegraphs from a single Reach for it when you need a quick visual of where wall-clock time goes across a
whole binary. It profiles a complete run, so for fine-grained, statistically
sound timing of individual functions use alternatives samplyperf |
197.5k | 5.9k | 1d ago | Maintained |
| hyperfine sharkdp/hyperfine by David Peter |
A command-line benchmarking tool that runs a program many times, performs warmup runs, and reports mean/stddev with statistical analysis and outlier detection. Supports parameterized runs and exporting results to JSON/CSV/Markdown. Use it to compare whole programs or shell commands (e.g. two CLI builds) under
realistic conditions. It measures process start-to-finish time, so it cannot
profile in-process functions; for that use alternatives criteriondivan |
97.2k | 28.2k | 1mo ago | Maintained |
| samply mstange/samply by Markus Stange |
A cross-platform sampling profiler: Good when you want interactive exploration of where time is spent across a whole
process. For a static, shareable SVG instead use alternatives cargo-flamegraphperf |
40.3k | 4.2k | 1w ago | Maintained |
Debugging & Diagnostics
3Debuggers, expansion, and understanding what the compiler sees.
| Tool | Notes | Downloads | Stars | Updated | Status |
|---|---|---|---|---|---|
| cargo-expand dtolnay/cargo-expand by David Tolnay |
Prints the source of your crate after macro expansion, so you can see exactly
what It shells out to the compiler's expansion mode, which requires a nightly alternatives cargo-show-asm |
422.0k | 3.1k | 2w ago | Maintained |
| tokio-console tokio-rs/console by Carl Lerche, Eliza Weisman, Console |
A diagnostics and debugging TUI for async Rust. It connects to a running
Indispensable for diagnosing async stalls and runaway tasks. It requires adding
the subscriber and building with alternatives samplycargo-flamegraph |
68.5k | 4.5k | 1mo ago | Maintained |
| cargo-show-asm pacak/cargo-show-asm by pacak |
Shows the assembly, LLVM IR, MIR, or WASM the compiler generates for a chosen
function via Use it when you need to inspect codegen at the instruction level for a specific
function. To see source after macro expansion instead use alternatives cargo-expand |
6.9k | 943 | 6d ago | Maintained |
Documentation
1Writing, testing, and publishing documentation.
| Tool | Notes | Downloads | Stars | Updated | Status |
|---|---|---|---|---|---|
| mdbook rust-lang/mdBook by Eric Huss, Dylan DPC, rust-lang-owner |
Builds searchable online books from a set of Markdown files; it powers The Rust Book and most official Rust documentation. Run |
793.9k | 21.7k | 3d ago | Maintained |
Release & Publishing
4Versioning, changelogs, and shipping crates and binaries.
| Tool | Notes | Downloads | Stars | Updated | Status |
|---|---|---|---|---|---|
| git-cliff orhun/git-cliff by Orhun Parmaksız |
A highly customizable changelog generator that builds release notes from git history, with first-class support for conventional commits and fully templated output (via Tera) and regex-based commit grouping. Use it when you want full control over changelog formatting independent of your
release tooling. It only produces the changelog; to drive the actual version
bump, tag, and publish use alternatives release-plzcargo-release |
23.1k | 11.9k | 1d ago | Maintained |
| release-plz release-plz/release-plz by Marco Ieni |
Automates releases for cargo workspaces through pull requests: it derives version bumps and changelog entries from conventional commits, opens a release PR, and publishes to crates.io once merged. Designed to run in CI. Use it for a hands-off, git-driven release flow across many crates. If you want
manual, step-by-step control from your terminal instead, use the lower-level
alternatives cargo-releasegit-cliff |
22.7k | 1.4k | 3d ago | Maintained |
| cargo-dist axodotdev/cargo-dist by Aria Desires, ashley williams, Misty De Méo, axoadmin, eng |
Builds and packages cross-platform binary artifacts and installers (shell/PowerShell installers, archives, npm/Homebrew formulae) and wires up the CI to produce them on a tagged release. Use it when you ship prebuilt binaries rather than just publishing a crate. Note
the project has been renamed to alternatives release-plzcargo-release |
15.3k | 2.0k | today | Maintained |
| cargo-release crate-ci/cargo-release by Ning Sun, Ed Page |
Automates the mechanics of cutting a release: bumps the version, commits, creates
a git tag, runs Reach for it when you want explicit, command-driven control over each release
step. If you prefer a fully automated, PR-based flow that derives versions from
conventional commits, use alternatives release-plzcargo-dist |
14.6k | 1.6k | today | Maintained |
Cross-Compilation & Targets
5Building for other platforms, embedded, and WebAssembly.
| Tool | Notes | Downloads | Stars | Updated | Status |
|---|---|---|---|---|---|
| wasm-pack rustwasm/wasm-pack by Jesper Håkansson |
Builds Rust-generated WebAssembly for consumption from JavaScript, producing an
npm-ready package with the Use it when you publish a Rust library to npm or integrate WASM into a JS
toolchain. Note its maintenance activity has slowed; for a full Rust frontend app
prefer alternatives trunkwasm-bindgen-cli |
1.1M | 7.2k | 6d ago | Maintained |
| cargo-zigbuild rust-cross/cargo-zigbuild by messense |
Cross compiles by using Use it for lightweight, container-free cross builds, especially for glibc version
targeting. It requires Zig to be installed and does not cover every exotic target
or runtime; for those, alternatives cross |
1.1M | 2.5k | 2d ago | Maintained |
| cross cross-rs/cross by Adam Greig, publishers |
Zero-setup cross compilation: Use it to target architectures and platforms without manually installing cross
linkers. It requires a running container engine (Docker or Podman), which can be
a dealbreaker in restricted CI; if you only need different glibc versions or want
to avoid containers, consider alternatives cargo-zigbuild |
302.6k | 8.2k | 1mo ago | Maintained |
| probe-rs probe-rs/probe-rs by Noah Hüsser, Dominik Boehi, crate-owners |
A toolkit for debugging and flashing embedded Rust on real hardware. It talks
to debug probes (CMSIS-DAP, J-Link, ST-Link) to flash firmware, reset targets,
and run an in-app log/RTT console, and ships Reach for it whenever you develop firmware for microcontrollers. It's irrelevant for hosted (non-embedded) targets, and very capable probes with vendor-specific features may still need their proprietary tooling. alternatives OpenOCDcargo-flashcargo-embed |
129.1k | 2.8k | 2d ago | Maintained |
| trunk trunk-rs/trunk by Anthony Dodd |
A WASM web application bundler for Rust frontend frameworks like Yew and Leptos.
Driven by a Reach for it to build and ship a Rust single-page app to the browser. If your
goal is instead to produce a WASM package consumed from JavaScript/npm, use
alternatives wasm-packwasm-bindgen-cli |
82.0k | 4.3k | 2mo ago | Maintained |
Editor & Productivity
5Language servers, watchers, and general developer ergonomics.
| Tool | Notes | Downloads | Stars | Updated | Status |
|---|---|---|---|---|---|
| just casey/just by Casey Rodarmor, maintainers |
A command runner that saves project-specific commands as recipes in a Use it to standardize common project tasks (build, test, lint, deploy) for a
team. It is a task runner, not a build system, so it does not do incremental
builds based on file changes; for that keep using alternatives makecargo-make |
265.8k | 34.1k | 6d ago | Maintained |
| evcxr evcxr/evcxr by David Lattimore |
Provides interactive Rust evaluation: Use it for experimentation, learning, and prototyping snippets without a full
crate. It recompiles behind the scenes so it is not a performance-measurement
tool; for benchmarking use alternatives irust |
92.9k | 6.4k | 2d ago | Maintained |
| bacon Canop/bacon by Denys Séguret |
A background Rust code checker that re-runs Use it for a fast, terminal-based feedback loop without a full IDE. It is
Rust/cargo-focused; if you need a language-agnostic runner that executes
arbitrary commands on file change, use alternatives watchexeccargo-watch (deprecated) |
16.7k | 3.3k | 2w ago | Maintained |
| rust-analyzer rust-lang/rust-analyzer |
The official Language Server Protocol implementation for Rust, powering IDE features like completion, go-to-definition, inline type hints, refactorings, and on-the-fly diagnostics in editors such as VS Code, Zed, and Neovim. It is the default choice for editor integration and is distributed as a alternatives bacon |
— | 16.5k | today | Maintained |
| watchexec watchexec/watchexec by Félix Saparelli |
A general-purpose, language-agnostic file watcher that runs an arbitrary command
whenever matching files change, with debouncing, glob filters, and process
restart handling. Installed via the Use it to drive any tool on change (tests, builds, codegen, server reloads),
regardless of language. For a Rust-specific experience with a results TUI and
ready-made alternatives baconcargo-watch (deprecated) |
7.6k | 7.0k | 1mo ago | Maintained |
No tools match your search.