Aller au contenu principal
U/
Traits
rust

impl Display pour une struct Point

Définir la struct Point { x: i32, y: i32 } et implémenter std::fmt::Display pour qu'elle s'affiche sous la forme (x, y) avec println!.

25 minPublié le 20 mai 2026Proposé par Anonyme

Défi

// Lisez attentivement, codez sur votre machine

É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)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 seulement Debug).
  • 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 Debug librement.

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)
Espace solution

Proposer une solution

Connectez-vous ou créez un compte pour envoyer votre code (aucune exécution côté serveur — on stocke juste le texte pour la communauté).

// À garder en tête
  • D'abord, faire marcher

    On ne cherche pas à optimiser : d'abord, on fait marcher le truc. Optimiser vient ensuite — et ça aussi, ça s'apprend. (Si un défi porte sur l'optimisation, son énoncé le précise.)

  • Pas de mauvaise réponse

    Il n'y a pas de mauvaise réponse à un défi. Le but, c'est de le faire. Ce qui compte, c'est de s'entraîner.

  • Trop dur ? Au suivant

    Un défi te résiste ? N'hésite pas à en prendre un autre. Ils seront encore là demain.