J'ai la latitude en degrés sous forme de f64
et je dois le convertir en un String
. Au début, j'ai pensé à mettre en œuvre Display
comme ceci :
struct Latitude(f64);
impl fmt::Display for Latitude {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
write!(f, "{} {}", if self.0 > 0. { "N" } else { "S" }, self.0)
}
}
fn main() {
let lat: f64 = 45.;
println!("{}", Latitude(lat));
}
Après cela, j'ai des exigences supplémentaires. J'ai besoin de convertir en une des deux représentations :
N 70.152351
N 70° 09' 08"
Il y a également un drapeau supplémentaire ; lorsqu'il est false
j'ai besoin de quelque chose comme :
- --.------
- --° -' -"
La manière la plus simple de mettre cela en œuvre sera :
fn format_lat(degree: f64, use_min_sec_variant: bool, is_valid: bool) -> String;
Cependant, je ne vois pas de fonctions libres dans la bibliothèque standard de Rust.
Je devrais peut-être utiliser struct Latitude(f64)
et mettre en œuvre un to_string
méthode ? Ou peut-être devrais-je implémenter un autre trait ?