- 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
Borrowing (references, &)
This lesson covers borrowing, which lets you use a value without moving ownership.
Writing &value creates a reference to it. A reference lets you pass a value to a function without moving ownership, so the original variable stays usable.
The sample code passes a reference to a string into fn calculate_length(s: &String) -> usize and confirms that the caller can still use s afterwards.
A common early stumble is knowing when to pass the value itself (which moves it) and when to pass a reference (which only borrows). "If you only need to read the value, use a reference" is a good rule of thumb.
In professional work, borrowing is used constantly to hand large pieces of data to a function without copying them.
๐งช 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).
