Rust’s defining bet is that memory safety and data-race freedom can be checked at compile time, with no garbage collector and no runtime cost, by making ownership part of the type system. That single decision ripples through every concern below: it is why Rust needs an unsafe keyword, why its foreign-function boundary is where the guarantees stop, and why its answer to “who frees the memory” is different in kind from every other language here.

Rust is also this section’s monomorphization pole, and the only language here where the generic system carries the safety proof as well as the abstraction. A lifetime is declared in the same angle brackets as a type parameter, which means the borrow checker and the trait solver are working on one system rather than two. The price is paid in compiled output and compile time, and the folder is honest about it. The comparison against erasure, reification, and stenciling lives in Generics, Monomorphization vs Erasure.

The ownership system

The foundation. Everything else in the folder assumes these six.

Traits and the generic vocabulary

A bound is the starting point, not the whole language. These notes go past T: Trait in the order the vocabulary was actually built.

What monomorphization costs

The pole, priced.

Coherence and the limits

What the system refuses, and why the refusals are load-bearing.

Values, patterns, and failure

Abstraction without cost

Macros, crates, and the build

Concurrency and the unsafe boundary

Read from the comparative layer

The cross-cutting substance lives in the common notes, read from Rust’s angle:


Any pages placed under this folder are auto-listed below by Quartz. See also the Programming Language Concepts theory this builds on.

32 items under this folder.