Esercizi di Rust
Temperature Converter in Rust
Convert between Celsius and Fahrenheit with an enum that remembers the unit.
Cosa imparerai
- 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.
Punti chiave
- Each variant carries the number.
- match returns the other unit.
- -40 is the same on both scales.
Esempio Rust eseguibile
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°FEsercitati
Apri l'esempio nel compilatore online, cambia un valore o aggiungi una riga e prova a prevedere l'output prima di eseguirlo. Poi rompi il codice di proposito e leggi il messaggio del compilatore.
Hai finito questa lezione?
Segnala come imparata per tenere traccia dei tuoi progressi.
I tuoi progressi sono salvati in questo browser Accedi per conservarli su ogni dispositivo.
Esercitati con una sfida
Usa ciò che questa lezione spiega per risolvere un problema reale. Ogni sfida gira nel browser, con test immediati e una revisione dell'IA.
Tutte le sfide