R
RUSTY YELLOW PAGES

A directory of the crates people actually reach for, filed by what they are for. Every page follows the same three sections — what the crate is, the situations it fits, and a map of its API with a small call example for each item — so you can look up an unfamiliar crate the same way every time. Crate pages are contributed as markdown pull requests.


Skip to the directory ↓

Almost nothing in Rust ships in the standard library. There is no HTTP client in std, no JSON parser, no async runtime, no random number generator. That looks like an omission until you notice what replaced it: a registry where any of those is one line in a Cargo.toml away, and where the library you reach for is usually maintained by people who work on that problem and nothing else.

A crate is what the compiler builds in one go and what Cargo publishes as one unit. Publishing one is deliberately undramatic: write a library, fill in a few fields of metadata, run cargo publish, and it is on crates.io under a name nobody else can take, at a version nobody can later change. Releases are immutable — a version that exists keeps existing, byte for byte — which is why a build that worked last year still works today, and why semver is load-bearing rather than advisory: the version number is the whole contract about what a new release is allowed to break.

That low barrier is why so much of Rust's vocabulary lives outside the language. serde decided how Rust types are serialized; tokio decided what an async runtime looks like; rand, regex and log each became the obvious answer without ever being blessed. None of them are standard, and all of them are effectively universal. When a crate becomes the common answer, the crates built on top of it interoperate for free — a logging crate and a web framework that both speak log need no adapter between them.

The cost is that choosing is now your job. A crate with millions of downloads may still be a thin wrapper somebody abandoned in 2019, and two crates solving the same problem can differ enormously in what they ask of you — whether they need an async runtime, whether they work without std, how much of their API is unsafe, how often they break. These pages exist to make that judgement faster: what the crate is, the situations it actually fits, and a map of its API with a call example for every item.

Async runtimes & concurrency

Executors, task spawning, synchronisation primitives and the machinery under them.

HTTP, web & RPC

Web frameworks, HTTP clients and servers, and the protocols services talk over.

Serialization & data formats

Turning values into bytes and back — JSON, TOML, binary formats, and the framework they share.

Error handling

Error types, context chains, and the derives that save writing them by hand.

CLI & terminal

Argument parsing, prompts, progress bars, colour, and full terminal user interfaces.

Text, parsing & Unicode

Parsers, regular expressions, case conversion, and the rules text actually follows.

Collections & data structures

Maps, sets, iterator adaptors, and containers with different trade-offs to the standard library's.

Machine learning

Neural networks, training and inference, and the tensor libraries underneath them.

Numerics & math

Linear algebra, arbitrary precision, statistics, and numeric traits.

Randomness & IDs

Random number generation, distributions, and unique identifiers.

Crypto, hashing & TLS

Hashes, ciphers, signatures, password hashing, and transport security.

Files, paths & OS

The filesystem, processes, signals, and the platform APIs underneath.

Bytes, memory & layout

Buffers, zero-copy casts, allocation control, and how a type is laid out.

WebAssembly & JS interop

Compiling to wasm, and carrying values across the boundary between Rust and JavaScript.

Macros, derive & codegen

Procedural macro tooling, and the crates that generate code from a description.

Logging, tracing & metrics

Recording what a program did, and shipping it somewhere it can be read.

Build scripts & tooling

Build-time code: compiling native sources, finding system libraries, reading versions.