1.3 KiB
11. Tuples
11.1 Nature — V1 REQUIS — FIGÉ
Un tuple est un type structurel anonyme, hétérogène, d'arité fixe.
Il n'a pas de .saseltype.
(int32, String)
(T) est un groupement, pas un tuple à un élément.
Il n'existe pas de tuple () ; Void exprime l'absence de valeur.
Arity minimale : 2.
11.2 Champs — V1 REQUIS — FIGÉ
Les tuples ne possèdent pas de noms de membres persistants.
Si des champs nommés stables sont nécessaires, utiliser une struct.
La déstructuration peut nommer des variables locales :
(int32 id, String name) = value;
Ces noms ne changent pas le type du tuple.
11.3 Indexation — V1 REQUIS — FIGÉ
Accès positionnel :
tuple[0]
tuple[1]
L'index doit être une constante connue à la compilation puisque le type de retour peut varier suivant la position.
Le tuple n'implémente donc pas un OpIndex<uint64,T> homogène ordinaire.
11.4 Égalité/comparaison intrinsèque — V1 REQUIS — FIGÉ
Si tous les éléments permettent l'égalité pertinente, le tuple peut être comparé composant par composant.
Si tous les éléments sont comparables, l'ordre du tuple est lexicographique.
Si un composant comparé retourne Ordering::Unordered, le tuple est Unordered.