pub struct Temperature {
pub temperature_type: String,
pub value: f64,
}
impl Temperature {
pub fn new() -> Temperature{
Temperature{
temperature_type: String::from("Celsius"),
value: 0.0,
}
}
pub fn to_celsius(&self) -> f64 {
if self.temperature_type == String::from("Celsius") {
return self.value;
}
else if self.temperature_type == String::from("Fahrenheit") {
return (self.value - 32.0) / 1.8
}
else if self.temperature_type == String::from("Kelvin") {
return self.value - 273.15;
}
else if self.temperature_type == String::from("Rankine") {
return self.value / 1.8 - 273.15;
}
else if self.temperature_type == String::from("Newton") {
return self.value * (100.0 / 33.0);
}
else if self.temperature_type == String::from("Réaumur") {
return self.value * 1.25;
}
else {
println!("Unsupported temperature type");
return 0.0;
}
}
pub fn to_fahrenheit(&self) -> f64 {
self.to_celsius() * 1.8 + 32.0
}
pub fn to_kelvin(&self) -> f64 {
self.to_celsius() + 273.15
}
pub fn to_rankine(&self) -> f64 {
self.to_celsius() * 2.25 + 491.67
}
pub fn to_newton(&self) -> f64 {
self.to_celsius() * (33.0 / 100.0)
}
pub fn to_reaumur(&self) -> f64 {
self.to_celsius() * 0.8
}
}