Génériques de rouille

Génériques de rouille
Bonjour les rouille. Pour celui-ci, nous explorerons ce que sont les génériques et comment utiliser les types génériques dans la langue de la rouille. Les génériques trébuchent la plupart des nouveaux débutants de la rouille, mais nous ferons de nos meilleurs efforts pour le rendre aussi clair que possible.

Si vous souhaitez explorer plus de sujets de rouille, consultez notre liste de rouille pour en savoir plus.

Le paramètre

Lorsque vous déclarez des types génériques, vous trouverez le paramètre. Il est utilisé pour représenter tout type de données en rouille:

Un exemple du paramètre de type dans une fonction est un montré:

fn my_function()

Ce qui précède définit une fonction générique qui prend un argument t de tout type.

Vous pouvez définir plusieurs paramètres génériques en les séparant avec des virgules:

fn my_function()

Dans la syntaxe ci-dessus, nous définissons plusieurs paramètres génériques, t, u, v. Bien qu'il ne soit pas nécessaire, il est courant de trouver des types génériques à partir de T et à incrémenter l'alphabet.

Rouille définir la structure générique

Nous pouvons définir une structure générique comme indiqué dans la syntaxe ci-dessous:

structure structure
// Infos de structure

Prenez l'exemple, structure définie ci-dessous:

struct mystruct
il,
J: U,

fn main ()
Soit var1 = mystruct
I: 10,
J: "Salut"
;
println!("X: ", var1.je);
println!("Y: ", var1.j);

Ce qui précède crée une structure générique avec deux paramètres. À l'intérieur de la structure, nous spécifions deux membres de structure de type T et U. Puisque T et U sont des types génériques, ils peuvent être de n'importe quel type.

Fonctions génériques

La même construction peut être appliquée aux fonctions et à la méthode. Si une fonction prend le type, elle est une fonction générique.

La définition de la fonction générique est comme indiqué:

fn func_name()
// Logique de fonction

Prenez l'exemple de la définition de la fonction générique ci-dessous:

FN générique(var: t)
println!("", var);

fn main ()
générique ("salut")

Dans cet exemple, nous avons une fonction générique qui prend tout type et l'imprime à la console. Cependant, l'exécution du code ci-dessus provoquera une erreur.

Puisque nous utilisons un paramètre générique, nous devons implémenter le trait d'affichage ou de débogage pour l'imprimer. Nous pouvons affiner le code comme:

Utilisez STD :: FMT :: Debug;
FN générique(var: t)
println!(":? ", var);

fn main ()
générique ("salut")

Dans ce cas, nous importons le trait de débogage et l'utilisons pour le type générique. Nous pouvons ensuite imprimer la valeur à l'aide de l'espace réservé du trait de débogage: :?

Le même cas s'applique si une fonction a besoin d'effectuer un type d'opération. Prenez la fonction d'exemple ci-dessous qui renvoie 0 si une valeur est égale et 1 si autrement.

fn même_odd (var: t) -> i32
Si var% 2 == 0
retour 0;
autre
retour 1;

Si nous appelons la fonction ci-dessus, il renverra une erreur. Nous devons mettre en œuvre le trait REM pour qu'il fonctionne comme:

Utilisez Std :: Ops :: Rem;
Utilisez STD :: CMP :: EQ;
fn même_odd + Eq> (var: t) -> i32

Les traits REM et EQ vous permettent d'utiliser l'opérateur reste et d'effectuer une comparaison logique.

Conclusion

Dans cet article, nous avons exploré les principes fondamentaux du travail avec des types génériques dans la langue de la rouille. Vérifiez les documents pour en savoir plus.