Bird
Raised Fist0
Rustprogramming~15 mins

Expression evaluation in Rust - Mini Project: Build & Apply

Choose your learning style10 modes available
Expression evaluation
๐Ÿ“– Scenario: You are building a simple calculator program that evaluates basic arithmetic expressions given as strings. This is useful for understanding how computers process math expressions step-by-step.
๐ŸŽฏ Goal: Create a Rust program that stores an arithmetic expression as a string, sets a variable for a number to use in the expression, evaluates the expression using that variable, and prints the result.
๐Ÿ“‹ What You'll Learn
Create a string variable called expression with the value "3 + x * 2".
Create an integer variable called x and set it to 4.
Calculate the result of the expression 3 + x * 2 using the variable x.
Print the result using println!.
๐Ÿ’ก Why This Matters
๐ŸŒ Real World
Calculators, spreadsheets, and many software tools need to evaluate math expressions entered by users.
๐Ÿ’ผ Career
Understanding expression evaluation is important for programming tasks involving math, data processing, and building user input features.
Progress0 / 4 steps
1
DATA SETUP: Create the expression string
Create a string variable called expression and set it to the exact value "3 + x * 2".
Rust
Hint

Use let expression = "3 + x * 2"; to create the string.

2
CONFIGURATION: Define the variable x
Create an integer variable called x and set it to 4.
Rust
Hint

Use let x = 4; to create the variable.

3
CORE LOGIC: Evaluate the expression using x
Calculate the result of the expression 3 + x * 2 using the variable x and store it in a variable called result.
Rust
Hint

Use let result = 3 + x * 2; to calculate the expression.

4
OUTPUT: Print the result
Print the value of the variable result using println!.
Rust
Hint

Use println!("{}", result); inside fn main() to print the result.

Practice

(1/5)
1. What does the following Rust expression do?
let result = 5 + 3 * 2;
Choose the correct description.
easy
A. Calculates 3 times 2, then adds 5
B. Multiplies 5 by 3, then adds 2
C. Calculates 5 plus 3, then multiplies by 2
D. Adds 5, 3, and 2 together

Solution

  1. Step 1: Understand operator precedence in Rust

    Multiplication (*) has higher precedence than addition (+), so 3 * 2 is calculated first.
  2. Step 2: Calculate the expression step-by-step

    3 * 2 = 6, then 5 + 6 = 11.
  3. Final Answer:

    Calculates 3 times 2, then adds 5 -> Option A
  4. Quick Check:

    5 + (3 * 2) = 11 [OK]
Hint: Remember multiplication before addition in expressions [OK]
Common Mistakes:
  • Adding numbers left to right ignoring precedence
  • Multiplying after addition
  • Confusing operator precedence
2. Which of the following is the correct way to assign the result of 4 + 7 to a variable named sum in Rust?
easy
A. let sum : 4 + 7;
B. sum = let 4 + 7;
C. let sum = 4 + 7;
D. let sum == 4 + 7;

Solution

  1. Step 1: Recall Rust variable assignment syntax

    In Rust, use let variable = expression; to assign a value.
  2. Step 2: Check each option for correct syntax

    let sum = 4 + 7; uses correct syntax: let sum = 4 + 7;. Others have syntax errors.
  3. Final Answer:

    let sum = 4 + 7; -> Option C
  4. Quick Check:

    Correct Rust assignment syntax [OK]
Hint: Use 'let var = expression;' to assign values [OK]
Common Mistakes:
  • Using '==' instead of '=' for assignment
  • Placing 'let' after variable name
  • Using ':' instead of '=' for assignment
3. What is the output of this Rust code?
fn main() {
    let x = 10;
    let y = 3;
    let result = x / y + x % y;
    println!("{}", result);
}
medium
A. 13
B. 3
C. 1
D. 4

Solution

  1. Step 1: Calculate integer division and remainder

    10 / 3 = 3 (integer division), 10 % 3 = 1 (remainder).
  2. Step 2: Add the results

    3 + 1 = 4.
  3. Final Answer:

    4 -> Option D
  4. Quick Check:

    10 / 3 + 10 % 3 = 4 [OK]
Hint: Remember integer division drops decimals, % gives remainder [OK]
Common Mistakes:
  • Treating division as float division
  • Confusing remainder with division result
  • Adding operands incorrectly
4. Identify the error in this Rust code snippet:
fn main() {
    let a = 5;
    let b = 0;
    let c = a / b;
    println!("{}", c);
}
medium
A. Division by zero causes a runtime panic
B. Variable 'c' is not declared properly
C. Missing semicolon after 'let b = 0'
D. println! macro syntax is incorrect

Solution

  1. Step 1: Analyze the division operation

    The code divides 'a' by 'b', where 'b' is zero.
  2. Step 2: Understand Rust runtime behavior

    Dividing by zero in Rust causes a runtime panic (crash), not a compile error.
  3. Final Answer:

    Division by zero causes a runtime panic -> Option A
  4. Quick Check:

    Division by zero panics in Rust [OK]
Hint: Check for zero divisor before division to avoid panic [OK]
Common Mistakes:
  • Thinking division by zero is a compile error
  • Ignoring runtime panics
  • Assuming variable declaration errors
5. Given a list of numbers, which Rust expression correctly calculates the sum of all even numbers?
let numbers = [1, 2, 3, 4, 5, 6];
let sum_even = /* fill here */;
println!("{}", sum_even);

Choose the correct expression to replace /* fill here */.
hard
A. numbers.iter().map(|x| x * 2).sum::<i32>()
B. numbers.iter().filter(|&&x| x % 2 == 0).sum::<i32>()
C. numbers.iter().filter(|&x| x % 2 != 0).sum::<i32>()
D. numbers.iter().sum::<i32>()

Solution

  1. Step 1: Understand the goal

    We want to sum only even numbers from the list.
  2. Step 2: Analyze each option

    numbers.iter().filter(|&&x| x % 2 == 0).sum::<i32>() filters even numbers (x % 2 == 0) and sums them. numbers.iter().map(|x| x * 2).sum::<i32>() doubles all numbers then sums (wrong). numbers.iter().filter(|&x| x % 2 != 0).sum::<i32>() sums odd numbers (wrong). numbers.iter().sum::<i32>() sums all numbers (wrong).
  3. Final Answer:

    numbers.iter().filter(|&&x| x % 2 == 0).sum::<i32>() -> Option B
  4. Quick Check:

    Filter evens then sum [OK]
Hint: Filter even numbers before summing with iterator methods [OK]
Common Mistakes:
  • Summing all numbers without filtering
  • Filtering odd numbers instead of even
  • Mapping values incorrectly before sum
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard