Skip to content

Topic index

Level: reference · the map

One line: Every topic in this library under every name you might look for it by — vector, hash map, static const, compound types, Shipyard — with the page that is its home and the pages to read next.

A folder has one name, and it is rarely the word you typed: a vector lives in 26_Collections/the_vec, static lives in 27_Modules/const_and_static, and "SSH keys for a private registry" lives in 05_Tooling/registry_authentication. This page is the index at the back of the book. Rows marked stub are outlines with their boundaries written down but no checked example yet.

How to find anything here

You have Go to
a word or a topic this page, then the site search (press /)
a whole subject you want to read in order a map: TYPES.md · OPTION.md · STRINGS.md · STRUCTS.md · SHADOWING.md · TOOLCHAIN.md
an error code such as E0502 ERRORS.md
a term to define in one line GLOSSARY.md
something to type KATAS.md
a book or course, chapter by chapter Rust by Example · Rust for Rustaceans · the Ultimate Rust courses · Rust in Action, run · Rust: The Practical Guide, run
what to read next, section by section the course table on the homepage
Polish terminology POLSKI.md

How the pieces fit. A topic folder holds one idea and never moves. A section (14_Strings/) groups folders by subject, and its README is a table of them. A map (the root *.md pages above) threads one subject through several sections in reading order. This index points at all three. Every lesson ends with See also links both ways and an If you are coming from another language section that links the matching page in the sibling libraries.

A

Topic, and other names for it Home Then
anyhow, error context anyhow and context stub thiserror vs anyhow stub
API design, interface design, API guidelines API design String parameters worth copying
Arc, atomically reference counted Sharing across threads: Arc Rc · Send and Sync stub
Array, fixed-size array, [T; N], static array, compound type, array iterate, write array values, filter an array Arrays: the map Arrays and slices · Writing an array down · Array or Vec? · A Vec of arrays · Const generics stub · TYPES.md
as, casting, type cast Casting with as Conversion
AsRef, AsMut, cheap borrow conversion AsRef and AsMut stub Borrow
Associated types, type Item Associated types or type parameters? stub Implementing Iterator
Associated function, Type::new, constructor impl blocks A type is not a constructor
Async, async/await, futures, Tokio Async What a future is · async fn and .await · Building minidb · Iterator versus Stream
Atomics, AtomicUsize, Ordering::SeqCst RwLock and atomics stub Atomic orderings stub · Compare and exchange stub
Attributes, #[derive], #[allow] What an attribute is Conditional compilation stub
Advent of Code Advent of Code in Rust stub Exercises

B

Topic, and other names for it Home Then
Backtrace, RUST_BACKTRACE Reading a backtrace What a panic costs
Benchmarking, Criterion, Divan, timeit Timing a block Benchmark harnesses stub · black_box is a hint
Bevy, game engine, ECS Games with Bevy Entities and components stub
bindgen, C headers Generating bindings stub Build scripts stub
Blanket impl, impl<T: X> Y for T Blanket impls stub Step 6: one blanket impl
Block, scope, { } A block is an expression Scope is about names
bool, boolean Meet the bool An enum instead of a bool
Borrowing, references, &, &mut, borrow checker Borrowing Borrowed state · Reborrowing · Where the & sits · Mutable binding, mutable reference
Box, heap allocation Box Stack and heap · The third owned form: Box<str>
break, continue, loop labels break continue · Loop labels · Flow control
BTreeMap, BTreeSet, sorted map BTreeMap and BTreeSet
Build scripts, build.rs Build scripts stub Calling C
Bytes, u8, [u8] Meet the byte A file is bytes · Printing bytes

C

Topic, and other names for it Home Then
C and C++ bugs, memory safety C and C++ — the bugs Rust is a reply to What Rust is stub
Calling C, FFI, extern "C" Calling C Migrating C to Rust · FFI-safe types stub · Data across the boundary stub · Callbacks across FFI stub
Capacity, capacity, with_capacity, reserve, shrink_to_fit, pre-allocating The anatomy of a String The global allocator · Every size_of, len and capacity error · Lints around size_of, len and capacity
Cargo, package manager, dependencies Adding a dependency From one .rs file to a Cargo project · TOOLCHAIN.md · Cargo.lock · Cargo subcommands stub
Cargo features, [features], optional dependencies Cargo features stub Conditional compilation stub
cargo-modules, module tree, pub(self), pub(crate), visibility reach Rust: The Practical Guide chapter 6, run Modules and visibility
Cell, RefCell, shareable mutable containers Interior mutability stub TYPES.md: pointers
cfg, #[cfg], cfg!, conditional compilation Conditional compilation stub What an attribute is
Channels, mpsc, crossbeam Channels Crossbeam channels stub · Go library: channels ↗
char, character, Unicode scalar value Meet the char Why a char is 32 bits
Clippy, lints Clippy: the groups, the settings, the commands Strict clippy lints · Lints around tests · What a warning is asking
Clone, cloning, .clone() Copy vs Clone What a clone costs · ToOwned · Reading the Clone for &T hover
Closures, lambdas, anonymous functions, nested functions What a closure is The three closure traits · The move keyword · Items inside a function
Coercion, deref coercion, unsizing Coercion Method resolution
Collections Collections TYPES.md: built by std
collect, FromIterator collect and FromIterator Collect the iterator into a Vec
Comments, doc comments, /// Comments that compile The example that is a test
Comparison, PartialEq, Ord, sorting The comparison traits stub Comparing and sorting text
Compile times, slow builds Compile times Release profiles stub
Compiler, rustc, LLVM, linker Compilers What a compiler does · LLVM · The linker
Compound types, tuples and arrays TYPES.md: compound types Tuples · Arrays: the map · Arrays and slices
Concurrency, threads, parallelism Spawning a thread Concurrency or parallelism stub · Concurrency library ↗
const, static, constants vs statics, static const const and static &'static str
Const generics, const N: usize Const generics stub Arrays and slices · Arrays in and out of functions
contains_key, contains, membership test A first HashMap: contains_key A first HashSet: contains · unnecessary_get_then_check
Contributing to Rust, rustc development A first contribution stub The Rust project stub · Building the compiler stub
Control flow, if, match, loops Control flow Pattern matching
Copy, copying vs moving Copy or move? Copy vs Clone · There is no Move trait
Cow, clone on write Cow: borrow until somebody writes What Cow explanations get wrong
Crates, packages, crate::, src/bin, default-run, cargo metadata, crate name - vs _ Packages and crates Modules and visibility · Rust: The Practical Guide chapter 6, run · Publishing a crate stub
Cross-compiling, targets Cross-compiling stub Targets and triples stub

D – F

Topic, and other names for it Home Then
Data types, types in Rust TYPES.md Values
dbg! What dbg! does Debugging Rust
Debug and Display, {:?}, {} Debug and Display The format mini-language
Debugging Debugging Rust
Default The Default trait stub unwrap_or_default
Deferred initialisation, let x; then x = …, assign once without mut Variables Rust: The Practical Guide, chapter 2 exercises, run · and, or claims, run
Destructuring Destructuring structs stub Destructuring enums stub
Divergent functions, -> !, never type The never type !
Drop, destructors, RAII, drop guard Drop, and what RAII buys Drop guards stub · The drop flag
Dynamic dispatch, dyn Trait, trait objects, vtable Static vs dynamic dispatch Dyn compatibility stub
Editions, 2021, 2024 What Rust is stub iter, iter_mut, into_iter (the 2021 array change)
Editors, IDE, RustRover, Zed, Neovim Choosing an editor RustRover setup · Zed setup
Embedded, no_std, bare metal Without std core, alloc and std stub
entry, or_insert, or_default, entry API, counting loop A first HashMap: entry HashMap · map_entry
Enum, variants, sum type What an enum is Variants that carry data · An enum as a state machine
Error codes, E0308, E0502 ERRORS.md
Error handling, Result, ?, Error trait Errors Option vs Result · The ? operator · What makes a type an error
Exit status, stderr Standard error, and exit status
expect, unwrap expect: writing down the proof unwrap is a TODO
Expressions vs statements, tail expression, block value, expression statement A block is an expression Rust: The Practical Guide §2.3–2.4, run · The unit type ()
Extension traits Extension traits A crate prelude stub
Files, File::open, reading lines Files Opening a file
Floats, f64, rounding What a float actually stores Making a float whole
fold, reduce, sum fold and reduce
for loops for loops Loops without an index · Ranges stub · iter, iter_mut, into_iter
Formatting, format!, {:>8}, rustfmt The format mini-language Formatting: rustfmt
From and Into, orphan rule From and Into TryFrom and TryInto
frozenset, frozen set, immutable set, hashable set, Python frozenset in Rust Sets of sets: why Rust needs no frozenset Mutable binding, mutable reference
Function pointers, fn(u32) -> u32 Function pointers
Functions, parameters, return values Functions The call stack · Returned by value · Items inside a function · Rust: The Practical Guide §2.3–2.4, run

G – L

Topic, and other names for it Home Then
Games, Bevy, game loop Games with Bevy What a game engine is stub
Generics, <T>, type parameters, monomorphization What a generic is Where the bound goes · Generics
Global allocator, heap allocation counting The global allocator Allocating without std stub
Glossary, vocabulary GLOSSARY.md
Hash map iteration order, HashDoS, RandomState, unsorted printout A first HashMap: iterating HashMap · iter_over_hash_type
HashMap, hash map, dictionary, dict, entry, contains_key, get A first HashMap HashMap · every error · lints · resources · Borrow
HashSet, set, insert returns bool, take A first HashSet HashSet · every error · lints
Hexadecimal, hex Why hexadecimal
if, if let if expressions if let
impl blocks, methods vs functions, struct methods impl blocks Method resolution
impl Trait, existential types Returning a trait Returning an iterator
Indices instead of references, graphs, arenas Indices instead of references stub Rc
Integers, i32, u8, integer types, overflow The integer types stub Writing a number down · Comparing two number types · Signed overflow
Interior mutability Interior mutability stub Sets of sets (Cell in a BTreeSet)
Internationalization, i18n, locale, translation Internationalization stub The string crates
Iterators, iter(), into_iter(), lazy Iterators Iterators are lazy · Adapters by job
JSON, serde Deriving Serialize and Deserialize stub The round trip stub
Katas, exercises KATAS.md Exercises
let else let else stub
Lifetimes, 'a, 'static Lifetime annotations How to learn lifetimes · What a lifetime does at the call site
Lock poisoning, Mutex Lock poisoning Forgotten unlock
loop loop while loops

M – O

Topic, and other names for it Home Then
Macros, macro_rules!, ! Macros stub Declarative macros · std macros you have not met stub
match match expressions Pattern matching · Match ergonomics
Memory layout, repr(C), padding, alignment Type layout stub What is a record, in memory?
Migrating C to Rust, the C ABI, rewriting a module Migrating C to Rust The C ABI stub · Safe wrappers stub
Method resolution, auto-deref Method resolution "No method named …"
mod.rs, module file layout, file not found for module, E0583, E0761 One module per file Rust: The Practical Guide chapter 6, run
Modules, mod, use, pub Modules and visibility Bringing names in with use · One module per file · Rust: The Practical Guide chapter 6, run · chapter 6 exercises, run
Monad, and_then What a monad is
MSRV, rust-version, versioning MSRV stub Semver hazards stub
Mutable binding, mutable reference, let mut vs &mut, immutable binding of a mutable reference Mutable binding, mutable reference Variables · Where the & sits · Reborrowing
Nested references, &mut &T, & &mut T, &&T, &mut &mut T Mutable binding, mutable reference Re-pointing a slice
Newtype, tuple struct wrapper A score is not a number: the newtype A type alias is not a new type stub · Wrapper types stub
Null, nullable pointer Nullable pointers Null dereference
Numbers Numbers and bytes TYPES.md: primitive types
Observability, tracing, logs, metrics Observability
Operators, +, Add, operator overloading Operators are traits
Option, Some, None Some and None OPTION.md
OsString, CString, kinds of string Six kinds of string Path and PathBuf stub
Ownership, moves Ownership and moves Ownership · Rust: The Practical Guide §4.2 and §4.4, run

P – R

Topic, and other names for it Home Then
Ownership in functions, taking, giving and returning ownership, pass by value or by reference Rust: The Practical Guide §4.2 and §4.4, run Ownership and moves · Borrowing · What an address shows
Palindrome, reverse a string, bytes vs chars Rust: The Practical Guide, chapter 3 exercises, run Walking a String · Meet the byte
Panic, panic!, unwinding What a panic costs The panic handler stub · Panics in unsafe code stub
Pointers, address, raw pointer, *const T Pointers Address, pointer, reference · Raw pointers · Wide pointers
Parallelism, rayon, par_iter Rayon stub Worker pools stub · Concurrency or parallelism stub
Parsing, parse, FromStr Parsing out of a string
Pattern matching, patterns, _, @ Pattern matching The wildcard _ · Binding with @ stub
PhantomData, phantom types Phantom types Marker traits
Prelude A crate prelude stub A trait must be in scope
Printing, println! Debug and Display Printing borrows · The braces take a name
Procedural macros, derive macros, attribute macros, syn, quote Procedural macros A function, macro_rules!, or a procedural macro stub · Declarative macros
Publishing, crates.io, cargo publish Publishing a crate stub Private registries stub
? operator, question mark The ? operator main can return a Result stub
Pythagorean triple, nested loops with a flag, Project Euler Rust: The Practical Guide, chapter 3 exercises, run Loop labels
Randomness, rand Randomness: std has none
Ranges, 0..5, ..= Ranges stub One arm, many values
Raw strings, escapes, r"…", b"…" Raw strings, escapes and the literal prefixes
Rc, reference counting Rc: the clone that copies a pointer Arc
Re-export, pub use, re-exporting, a path through a private module, E0603 Rust: The Practical Guide chapter 6, run Bringing names in with use · A crate prelude
Read and Write, I/O traits Read and Write stub Reading a line from standard input
Recursion, stack overflow Recursion and the size of the stack A generic recursive type
Registries, private registry, Shipyard, SSH key Private registries stub Registry authentication stub
Release builds, --release, profiles, LTO Release profiles stub What the optimizer does
Result, Ok, Err Ok and Err Option vs Result · The Result you are reading is probably an alias
Resources, books, courses, videos Resources Books · Start here
Returned by value, return values, return slot, sret, -> str, unsized return type Returned by value Drawing sret · The call stack · str is unsized · Every returned-by-value error · Returning a trait
Rust itself, what is Rust What Rust is stub Benefits of Rust
Rust: The Practical Guide (Nouman Azam, Rheinwerk 2025), book exercises with solutions Rust: The Practical Guide, run chapter 2 · chapter 3 · chapter 4 · chapter 5 · chapter 6 exercises, run
rustup, toolchains, nightly rustup Pinning the toolchain · Nightly by default

S

Topic, and other names for it Home Then
Send and Sync Send and Sync stub Unsafe traits stub
Serialization, serde, zero-copy deserialization Data Zero-copy deserialization stub
Set operations, union, intersection, difference, symmetric difference, XOR of sets, subset, superset, disjoint, &a | &b Set operations: methods borrow, operators build HashSet · BTreeMap and BTreeSet
Sets of sets, set of sets, nested sets, HashSet<HashSet<T>>, BTreeSet<BTreeSet<T>>, power set, ∅ vs {∅}, unordered pair as a key Sets of sets: why Rust needs no frozenset BTreeMap and BTreeSet · Set operations
Shadowing, let x = x SHADOWING.md When to shadow
Signals, Ctrl-C, SIGPIPE Catching a signal Broken pipe stub
Size of a type, size_of, size_of_val, sizeof, how big is a String Stack and heap The anatomy of a String · str is unsized · Every size_of, len and capacity error · Lints around size_of, len and capacity
Slices, &[T], fat pointer, wide pointer Arrays and slices Wide pointers · Slices of slices · slice methods
Smart pointers, Deref, Box, Rc, Arc Smart pointers What a smart pointer is · What a smart pointer costs · TYPES.md: pointers
Square of sum, sum of squares, sum of multiples, overflow at large N Rust: The Practical Guide, chapter 3 exercises, run for loops · The integer types
sret, hidden return pointer, out-parameter, return slot, rdi/rax on return Drawing sret Returned by value · LLVM and its IR
Stack and heap Stack and heap The call stack · A stack slot is reused
static, &'static str const and static &'static str
stdin, reading input Reading a line from standard input Feeding stdin
Strings, String, &str, UTF-8 String vs &str Drawing the owner and the view · STRINGS.md · Strings
Struct, fields, unit struct, tuple struct What a struct is STRUCTS.md · When a struct refuses
Struct update, reusing fields from another struct, ..base Struct update syntax
Supertraits Supertraits

T

Topic, and other names for it Home Then
Templates, project starters, lint profiles Templates
Temporary directory, tempfile, TempDir, test fixture on disk Temporary directories in tests How cargo test runs your tests · Read and Write
Test double, mock, fake, stub, spy, mockall, dependency injection A test double is a second impl Static and dynamic dispatch · Mocking a server stub
Test harness, harness = false, libtest-mimic, custom test runner, setup and teardown A harness of your own How cargo test runs your tests · cargo-nextest
Testing, #[test], cargo test Testing A first test, step by step · How cargo test runs your tests · Other kinds of test · A test double is a second impl · A harness of your own · Errors · Lints · Courses and links · Testing concurrent code stub
Threads, thread::spawn, join Spawning a thread Channels · Worker pools stub · Actors stub
Time, Instant, Duration, SystemTime Two clocks Time and benchmarking
ToOwned, to_owned() How to learn ToOwned ToOwned · Three ToOwned katas, run
Traits, interfaces What a trait is Traits · A trait must be in scope
Transmute Transmute stub Casting with as
Tuples, (a, b) Tuples TYPES.md: compound types
Type aliases, type X = Y A type alias is not a new type stub The Result alias
Type inference, annotations, turbofish Type inference What a type annotation does · When the compiler cannot infer

U – Z

Topic, and other names for it Home Then
Undefined behaviour, validity Validity invariants stub What an invariant is · Miri stub
Union What a union is for the set operation, set operations
Unit type, () The unit type ()
unsafe What unsafe turns off Raw pointers · Unsafe traits stub · The drop check stub
unwrap, unwrap_or, unwrap_or_else What unwrap does unwrap is a TODO · unwrap_or · unwrap_or_else
Variables, let, mut Variables A name is not a place
Vec, vector, dynamic array, list Vec Vec methods · What a Vec guarantees · Grids and nested Vecs
VecDeque, queue VecDeque
WebAssembly, WASM, wasm32 WebAssembly Rust in the browser stub
while, while let while loops while let
Workspaces, monorepo Workspaces stub A tree of practice projects
zip, enumerate zip and enumerate

When a topic is missing

Search the site first (/), then TODO.md for the strings vocabulary that is tracked but not written. If it is in neither, the topic has no page yet — and a stub with its boundaries written down is the cheapest way to give it one (CONTRIBUTING.md: stubs).

Po polsku

To jest indeks tematów — odpowiednik indeksu na końcu książki. Nazwa katalogu rzadko jest słowem, które wpisujesz: wektor mieszka w 26_Collections/the_vec, a static w 27_Modules/const_and_static. Każdy wiersz podaje temat pod kilkoma nazwami, stronę, która jest jego domem, i strony do przeczytania potem; polskie odpowiedniki terminów zbiera POLSKI.md.

Szukaj po polsku: indeks tematów · spis pojęć Rust · rust topics index · rust learning roadmap