- 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
The Result type and error handling
This lesson covers the Result type, which represents the outcome of an operation that might fail.
Result<T, E> is either Ok(value) on success or Err(error) on failure. Handling errors through this return value, rather than by throwing exceptions, is the Rust way.
The sample code defines a divide function that returns Err when asked to divide by zero, and uses match to write the success and failure paths.
A common early stumble is expecting exception handling like try/catch from other languages. Rust instead puts Result in the return type of anything that can fail, so the compiler stops you from forgetting to handle the error.
In professional work, most operations that can fail — reading a file, talking to the network — are implemented as functions returning a Result.
๐งช 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).
