Défi
Énoncé
Déclarer la struct Point { x: i32, y: i32 }. Implémenter le trait std::fmt::Display pour Point de sorte que println!("{}", p) produise la chaîne (x, y) où x et y sont les valeurs des champs. La méthode fmt écrit dans le Formatter via write!. Dans main, créer deux instances de Point et les afficher avec println! pour valider l'implémentation.
Contraintes
- Compilé avec
rustc --edition=2021 main.rs. - Implémenter
std::fmt::Display(pas seulementDebug). - Le format de sortie est exactement
(x, y)avec les parenthèses, la virgule et l'espace. - Ne pas
#[derive(Display)]: l'implémentation manuelle est requise. - La struct peut dériver
Debuglibrement.
Exemple
use std::fmt;
struct Point {
x: i32,
y: i32,
}
impl fmt::Display for Point {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
write!(f, "({}, {})", self.x, self.y)
}
}
fn main() {
let a = Point { x: 3, y: -7 };
let b = Point { x: 0, y: 0 };
println!("{}", a);
println!("{}", b);
}
Sortie :
(3, -7)
(0, 0)