- 01Setting up (what you'll need)
- 02Your first output (println!)
- 03Variables and mutability (let / mut)
- 04Type annotations and basic types
- 05Branching (the if statement)
- 06Repeating (the for loop)
- 07Writing your own function
- 08Repeating (while and loop)
- 09Ownership, the basics
- 10Borrowing (references, &)
- 11Working with vectors (Vec)
- 12Structs
- 13enum and the match expression
- 14The Option type (null safety)
- 15The Result type and error handling
- 16Traits
- 17Generics
- 18Closures
- 19Working with strings (String)
- 20[Project] Build a small inventory system
Ownership, the basics
This lesson covers ownership, the idea that defines Rust more than any other.
In Rust every value has exactly one owning variable. Assigning the owner to another variable moves ownership there, and the original variable can no longer be used. This is how Rust prevents memory-management bugs.
The sample code shows that assigning a String variable s1 to s2 would move ownership to s2 and make s1 unusable — and sidesteps that by duplicating the value with clone().
A common early stumble is precisely this behaviour: assignment makes the original variable unusable. Few other languages work this way, so it feels strange at first, but it is the heart of how Rust manages memory safely.
In professional work, the ownership rules are what make memory leaks and double frees unlikely even without a garbage collector.
๐งช This site can't compile or run Rust directly, so it checks on the spot whether what you typed matches the reference code (scoring happens entirely in your browser โ nothing is sent anywhere).
