apprendre-rust

Cours gratuits de Rust 🦀 en Francais 🇫🇷

View on GitHub

Sommaiređź“š

Les methodes struct🛠️

Qu’est ce qu’une methode struct❔

Les methodes struct sont des fonctions qui sont attachées a un struct, pour les rendre plus facile d’utilisation.

Le mot cle impl

Si l’on a un struct appelé Personne

struct Personne {
    nom: String,
    age: u8,
    passions: Vec<String>,
    pays: String,
    compagnie: String,
}

ℹ️ passions est un vecteur d’items de type String.

On peut créer une methode pour le struct qui va presenter la personne.

Pour déclarer une methode, on utilise le mot clé impl, de la façon suivante:

impl Personne {
    fn presentation(&self) {
        println!("Bonjour, je m'appelle {}, j'ai {} ans et je vis en {}. Je travaille a {} et mes hobbies sont: {}", self.nom, self.age, self.pays, self.compagnie, self.passions.join(", "));
    }
}

ℹ️ La fonction prend comme parametre &self, qui correspond a l’instance du struct sur laquelle on utilise la methode.

ℹ️ La methode join est une methode qui joint les items d’un vecteur avec un séparateur pour créer un string.

Nous pouvons maintenat créer une nouvelle instance du struct et utiliser la methode presentation.

fn main() {
    let personne = Personne {
        nom: String::from("LĂ©opold"),
        age: 13,
        passions: vec![String::from("💻"), String::from("🛌"), String::from("🍔")],
        pays: String::from("France 🇫🇷"),
        compagnie: String::from("Skwal-net"),
    };

    personne.presentation();
}

ℹ️ La fonction String::from est une fonction qui crée un String depuis un texte de type str. Les types str et String sont deux types differents, mais ils representent tout les deux un texte. Les types String ont plus de fonctionnalité que les types str, mais ils sont plus lourds. Par defaut, dans le code "Hello", le type str est utilisé.

Sortie:

Bonjour, je m'appelle Léopold, j'ai 13 ans et je vis en France 🇫🇷. Je travaille a Skwal-net et mes hobbies sont: 💻, 🛌, 🍔

Multiple methodes

On peut aussi creer plusieurs methodes pour un struct.

Ajoutons une methode est_adulte pour le struct Personne.

impl Personne {
    fn presentation(&self) {
        ...
    }

    fn est_adulte(&self) -> bool {
        self.age >= 18
    }
}

ℹ️ La fonction est_adulte n’a pas besoin du mot clé return, car quand une methode renvoie une valeur, la derniere expression est automatiquement retournee.

On peut maintenant utiliser la fonction est_adulte pour savoir si la personne est adulte ou pas.

fn main() {
    let personne = Personne {
        ...
    };

    if personne.est_adulte() {
        println!("{} est adulte âś…", personne.nom);
    } else {
        println!("{} n'est pas adulte â›”", personne.nom);
    }
}

Sortie:

LĂ©opold n'est pas adulte â›”

Accueil 🏠 - Section suivante ⏭️


Course created by SkwalExe and inspired by Dcode