Rust Practice Exercises

FizzBuzz in Rust

The classic interview warm-up, solved cleanly with match on a tuple.

  • Beginner
  • 2 min read
  • 1 runnable example
What you'll learn
  • match on (n % 3, n % 5)
  • The _ pattern
  • map and join
1 to 6
11
22
Fizz3
44
Buzz5
Fizz6

Two remainders, four cases

Print the numbers from 1 to 15, but print Fizz for multiples of 3, Buzz for multiples of 5 and FizzBuzz for multiples of both.

Matching on the tuple (n % 3, n % 5) checks both remainders at once, and _ means any value. map calls fizzbuzz for every number of the range and join puts the results on one line.

Key points

  1. (0, 0) means divisible by both.
  2. _ matches any value.
  3. Order of the arms matters.

Runnable Rust example

Rust
Run code →
main.rs
fn fizzbuzz(n: u32) -> String {
    match (n % 3, n % 5) {
        (0, 0) => String::from("FizzBuzz"),
        (0, _) => String::from("Fizz"),
        (_, 0) => String::from("Buzz"),
        _ => n.to_string(),
    }
}

fn main() {
    let line: Vec<String> = (1..=15).map(fizzbuzz).collect();
    println!("{}", line.join(" "));
}
Get a Run button for this example Result of running the code
1 2 Fizz 4 Buzz Fizz 7 8 Fizz Buzz 11 Fizz 13 14 FizzBuzz

Practice

Open the example in the online compiler, change a value or add a line, and predict the output before you run it. Then break the code on purpose and read the compiler's message.

Finished this lesson?

Mark it as learned to track your progress.

Practice with a challenge

Use what this lesson covers to solve a real problem. Each challenge runs in your browser with instant tests and an AI review.

All challenges