Quelle est la différence entre tuples et tableau dans la rouille?

voix
1

La seule différence que je peux comprendre après avoir lu le guide de débutant, est que dans tuple vous pouvez avoir des valeurs de types multiples? Les deux sont immuables?

Et quels sont les cas d'utilisation où je veux un tuple ou un tableau, en dehors de l'évidence.

Créé 20/10/2018 à 03:26
source utilisateur
Dans d'autres langues...                            


2 réponses

voix
3

tableau

  • collection de valeurs du même type
  • collection de taille fixe

élément Accès à

Vous pouvez accéder à l'élément de tableau par le nom du tableau, entre crochets, et l'indice, ex:

let arr = [22, 433, 55];
assert_eq!(arr[0], 22);

tableau destructing

Les tableaux peuvent être détruits en plusieurs variables, ex:

let arr = [1, 42 ,309];
let [id, code, set] = arr;

assert_eq!(id, 1);
assert_eq!(code, 42);
assert_eq!(set, 309);

tuple

  • collection de valeurs de différents types
  • fini séquence hétérogène

élément Accès à

Vous pouvez accéder à l'élément de tuple par nom tuple, point, et l'indice, ex:

let tup = (22, "str", 55);
assert_eq!(tup.0, 22);

Les fonctions

Tuples peuvent être utilisées pour renvoyer plusieurs valeurs des fonctions, ex:

fn num(i: u32) -> (i64, u32) {
    (-33, 33 + i)
}

assert_eq!(num(12), (-33, 45));

destructing tuples

Tuples peut aussi être détruite et il est plus pratique courante de détruire tuples plutôt que des tableaux, ex:

let tup = (212, "Wow", 55);
let (num, word, id) = tup;

assert_eq!(num, 212);
assert_eq!(word, "Wow");
assert_eq!(id, 55);

Ressources utiles:

Créé 20/10/2018 à 08:47
source utilisateur

voix
1

Un tableau est une liste d'éléments de type homogène. Vous pouvez parcourir et l'index ou le couper en tranches avec des indices dynamiques. Il doit être utilisé pour les collections homegeneous des éléments qui jouent le même rôle dans le code. En général, vous itérer sur un tableau au moins une fois dans votre code.

Un tuple est une agglomération de longueur fixe d'éléments hétérogènes. Il doit être considéré comme structdes champs anonymes. Les champs ont généralement un sens différent dans le code, et vous ne pouvez pas itérer dessus.

Créé 20/10/2018 à 08:49
source utilisateur

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more