union |
Union |
|---|---|
| Rust | |
Syntaxe
|
union NomUnion { champ1: Type1, champ2: Type2, // ... } |
Paramètres
| Nom | Description |
|---|---|
| NomUnion | Ce paramètre permet de définir le nom de l'union, étant utilisé comme type utilisateur dans le code. |
| champ1 | Ce paramètre permet de déclarer un des champs de l'union, partageant le même espace mémoire avec les autres. |
| Type1 | Ce paramètre permet d'indiquer le type associé au champ de l'union. |
| champ2 | Ce paramètre permet d'ajouter un autre champ à l'union, également dans la même zone mémoire. |
| Type2 | Ce paramètre permet de préciser le type du second champ de l'union. |
Description
Ce mot réservé permet de définir une union et n'est qu'un mot clef lorsqu'il est utilisé dans une déclaration d'union.
Remarques
Permet d'indiquer l'équivalent Rust d'une union de style C.
Une union ressemble à une structure en termes de déclaration, mais tous ses champs existent dans la même mémoire, superposés les uns aux autres. Par exemple, si nous voulions des bits en mémoire que nous interprétons parfois comme un u32 et parfois comme un f32, nous pourrions écrire :
Correspondance sur les unions
Il est possible d'utiliser la correspondance de motifs sur les unions. Un seul nom de champ doit être utilisé et correspondre au nom d'un des champs de l'union. Comme pour la lecture d'une union, la correspondance de motifs sur une union requiert unsafe.
Références aux champs d'union
Tous les champs d'une union sont au même emplacement en mémoire, ce qui signifie qu'emprunter un champ équivaut à emprunter l'union entière, pour la même durée de vie :