Stay Practiced.
Local toolsSite guideSettings
Curriculum

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.

Select a node. Drag the background to pan.100%

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.

Open this unit

The course, in order

Open a unit in the map to inspect its activities. Reading, guided completion, independent work and review remain distinct evidence.

  1. 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
  2. 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
  3. 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
  4. 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
  5. 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
  6. 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
  7. 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
  8. 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
  9. 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
  10. 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
  11. 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
  12. 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
  13. 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
  14. 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
  15. 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
  16. 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
  17. 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
  18. 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
  19. 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
  20. 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
TheoryHands-on codingEvidence / reviewTechnical wikiMembership access