Exercícios de Rust
Temperature Converter in Rust
Convert between Celsius and Fahrenheit with an enum that remembers the unit.
O que você vai aprender
- 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.
Pontos-chave
- Each variant carries the number.
- match returns the other unit.
- -40 is the same on both scales.
Exemplo executável de 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°FPratique
Abra o exemplo no compilador online, mude um valor ou adicione uma linha e tente prever a saída antes de executar. Depois quebre o código de propósito e leia a mensagem do compilador.
Terminou esta lição?
Marque como aprendida para acompanhar seu progresso.
Seu progresso está salvo neste navegador Entre para mantê-lo em todos os dispositivos.
Pratique com um desafio
Use o conteúdo desta lição para resolver um problema real. Cada desafio roda no navegador, com testes instantâneos e uma revisão por IA.
Todos os desafios