Exemple avancé d'inférence de type en Rust

RustRustBeginner
Pratiquer maintenant

This tutorial is from open-source community. Access the source code

💡 Ce tutoriel est traduit par l'IA à partir de la version anglaise. Pour voir la version originale, vous pouvez cliquer ici

Introduction

Dans ce laboratoire, le moteur d'inférence de type est mis en valeur pour sa capacité à déduire le type d'une variable en fonction de son utilisation et de son affectation de valeur, démontré dans un exemple avancé utilisant le langage de programmation Rust.

Note : Si le laboratoire ne spécifie pas de nom de fichier, vous pouvez utiliser n'importe quel nom de fichier que vous voulez. Par exemple, vous pouvez utiliser main.rs, le compiler et l'exécuter avec rustc main.rs &&./main.

Inference

Le moteur d'inférence de type est assez intelligent. Il fait plus que regarder le type de l'expression de valeur lors d'une initialisation. Il regarde également comment la variable est utilisée ensuite pour inférer son type. Voici un exemple avancé d'inférence de type :

fn main() {
    // En raison de l'annotation, le compilateur sait que `elem` a le type u8.
    let elem = 5u8;

    // Crée un vecteur vide (un tableau pouvant croître).
    let mut vec = Vec::new();
    // À ce stade, le compilateur ne connaît pas le type exact de `vec`, il
    // sait seulement qu'il s'agit d'un vecteur de quelque chose (`Vec<_>`).

    // Insère `elem` dans le vecteur.
    vec.push(elem);
    // Aha! Maintenant, le compilateur sait que `vec` est un vecteur de `u8` (`Vec<u8>`)
    // TODO ^ Essayez de commenter la ligne `vec.push(elem)`

    println!("{:?}", vec);
}

Aucune annotation de type de variables n'était nécessaire, le compilateur est content et le programmeur l'est aussi!

Summary

Félicitations! Vous avez terminé le laboratoire Inference. Vous pouvez pratiquer d'autres laboratoires dans LabEx pour améliorer vos compétences.