Rust: ownership to reliable systems
Develop ownership fluency, typed failure, collections, I/O, concurrency, protocols and safe library boundaries through complete transfers.
20 units · Plus, Pro · 20 programming subjects + 2 security tracks
Branches show this unit’s authored theory, coding and assessment work.
Unit 1 / 20
Return a view only while its owner lives
Choose moves, borrows and deliberate clones so every returned view has a valid owner and independent data is copied only where the contract needs it.
0 prerequisite skills · Reading, guided completion and independent success remain separate evidence.
The course, in order
Open a unit in the map to inspect its activities. Reading, guided completion, independent work and review remain distinct evidence.
- Return a view only while its owner lives
Choose moves, borrows and deliberate clones so every returned view has a valid owner and independent data is copied only where the contract needs it.
Open this unit - Borrow valid text and own only the repair
Choose byte, scalar-value and ownership units explicitly, returning Cow only when the unchanged path can truly borrow caller storage.
Open this unit - Keep syntax, range and framing failures distinct
Parse exact data into Result values whose variants preserve whether the input grammar, numeric range or binary framing failed.
Open this unit - Keep collection changes private until they succeed
Move non-Clone values through suitable collections and publish a stable transformation only after every fallible decision succeeds.
Open this unit - Prove mutable regions do not overlap
Move owned buffers without cloning and derive simultaneous mutable views only through a boundary that proves the regions are disjoint.
Open this unit - Make invalid numeric state unrepresentable
Validate grammar and range before narrowing into private domain types, preserving exact money and endpoint values without float conversion.
Open this unit - Validate a frame before exposing a typed view
Decode declared byte order and bounded lengths before slicing, and convert runtime records to exact owned array sizes without truncation or padding.
Open this unit - Complete borrowed stream operations without inventing EOF
Continue across short successful reads and writes, preserve underlying failure kinds and advance buffered input only by bytes actually consumed.
Open this unit - Separate lexical paths from filesystem traversal
Validate a portable relative path grammar, classify entries without following links and publish a sorted complete walk only after every traversal succeeds.
Open this unit - Let Option carry explicit configuration presence
Resolve layered settings without treating false, zero or an empty present choice as absence, then replace state only after the combined invariant is valid.
Open this unit - Keep batches and priorities stable without extra bounds
Traverse borrowed collections with guaranteed progress and order owned priority work by explicit keys rather than payload accidents.
Open this unit - Observe buffered completion before publication
Complete short writes, preserve write and flush failure categories, and rename only an exclusively acquired prepared file whose owned handles have settled.
Open this unit - Borrow into scoped workers and observe every outcome
Bound scoped concurrency, borrow only within the scope, join every worker after success or panic, and publish results in input order without partial output.
Open this unit - Initialize once and cache only committed data
Use one synchronization boundary for shared initialization and keep failed persistence or stale reads from becoming advertised cache state.
Open this unit - Retry one classified failure and retain its source
Bound deterministic retry effects while preserving path and source context for failures that cross a filesystem or service boundary.
Open this unit - Represent legal transitions and stage the batch
Use enums to make lifecycle states explicit and apply a command batch to private owned state before replacing the caller-visible value.
Open this unit - Match atomic ordering and poison recovery to the invariant
Use one atomic read-modify-write for independent counters and clear mutex poison only after protected state has been inspected and repaired.
Open this unit - Let sender ownership and socket timeouts define completion
Drain channels until every sender is gone and complete a framed local socket exchange while the acquired connection and its timeouts remain owned.
Open this unit - Expose a narrow library contract and commit once
Compose typed library steps and import a bounded framed batch without leaking parser details, partial state or unobserved failure into its consumer.
Open this unit - Consume cleanup once and observe the child completely
Own reverse-order FnOnce compensation and return a local child process outcome with stdout, stderr and exit status all preserved.
Open this unit
