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¶
D – F¶
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¶
P – R¶
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¶
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