Rust Practice Exercises
Temperature Converter in Rust
Convert between Celsius and Fahrenheit with an enum that remembers the unit.
What you'll learn
- An enum with data
- match to convert
- Formatting with {:.1}
convert
100.0°C212.0°F98.6°F37.0°C-40.0°C-40.0°FThe unit is part of the value
An enum can record which unit a temperature uses, so the compiler stops you from mixing Celsius and Fahrenheit by accident.
convert matches on the variant and returns the other one. show formats the number with one digit after the decimal point. -40 is the one temperature that is the same on both scales.
Key points
- Each variant carries the number.
- match returns the other unit.
- -40 is the same on both scales.
Runnable Rust example
Rust
main.rs
enum Temperature {
Celsius(f64),
Fahrenheit(f64),
}
fn convert(temperature: &Temperature) -> Temperature {
match temperature {
Temperature::Celsius(c) => Temperature::Fahrenheit(c * 9.0 / 5.0 + 32.0),
Temperature::Fahrenheit(f) => Temperature::Celsius((f - 32.0) * 5.0 / 9.0),
}
}
fn show(temperature: &Temperature) -> String {
match temperature {
Temperature::Celsius(c) => format!("{c:.1}°C"),
Temperature::Fahrenheit(f) => format!("{f:.1}°F"),
}
}
fn main() {
for input in [Temperature::Celsius(100.0), Temperature::Fahrenheit(98.6), Temperature::Celsius(-40.0)] {
println!("{} = {}", show(&input), show(&convert(&input)));
}
}
100.0°C = 212.0°F
98.6°F = 37.0°C
-40.0°C = -40.0°FPractice
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.
Your progress is saved in this browser Sign in to keep it on every device.
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