From 1993f434188cd93e2c4b60fdf20753c485cc4940 Mon Sep 17 00:00:00 2001 From: LukeMathWalker <20745048+LukeMathWalker@users.noreply.github.com> Date: Fri, 24 May 2024 12:20:11 +0200 Subject: [PATCH] You can assign an `if/else` expression to a variable. --- book/src/02_basic_calculator/03_if_else.md | 23 +++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/book/src/02_basic_calculator/03_if_else.md b/book/src/02_basic_calculator/03_if_else.md index a45f86e..ee7b458 100644 --- a/book/src/02_basic_calculator/03_if_else.md +++ b/book/src/02_basic_calculator/03_if_else.md @@ -5,7 +5,7 @@ A sequence of instructions is executed from top to bottom, and that's it. It's time to introduce some **branching**. -## `if` expressions +## `if` clauses The `if` keyword is used to execute a block of code only if a condition is true. @@ -20,6 +20,8 @@ if number < 5 { This program will print `number is smaller than 5` because the condition `number < 5` is true. +### `else` clauses + Like most programming languages, Rust supports an optional `else` branch to execute a block of code when the condition in an `if` expression is false. For example: @@ -80,6 +82,25 @@ Here are the comparison operators available in Rust when working with integers: - `<=`: less than or equal to - `>=`: greater than or equal to +## `if/else` is an expression + +In Rust, `if` expressions are **expressions**, not statements: they return a value. +That value can be assigned to a variable or used in other expressions. For example: + +```rust +let number = 3; +let message = if number < 5 { + "smaller than 5" +} else { + "greater than or equal to 5" +}; +``` + +In the example above, each branch of the `if` evaluates to a string literal, +which is then assigned to the `message` variable. +The only requirement is that both `if` branches return the same type. + + ## References - The exercise for this section is located in `exercises/02_basic_calculator/03_if_else` \ No newline at end of file