Section courante

A propos

Section administrative du site

vec

Vecteur
Rust

Syntaxe

macro_rules! vec {
   () => { ... };
   ($elem:expr; $n:expr) => { ... };
   ($($x:expr),+ $(,)?) => { ... };
}

Description

Cette macro permet de créer un vecteur (Vec<T>) contenant les éléments spécifiés, avec un raccourci syntaxique flexible.

Remarques

Permet de créer une macro Vec contenant les paramètres.

vec! permet de définir des Vecs avec la même syntaxe que les expressions de tableau. Il existe deux formes de cette macro :

Créer une macro Vec contenant une liste d'éléments donnée :

  1. let v = vec![1, 2, 3];
  2. assert_eq!(v[0], 1);
  3. assert_eq!(v[1], 2);
  4. assert_eq!(v[2], 3);

Créer un Vec à partir d'un élément et d'une taille donnés :

  1. let v = vec![1; 3];
  2. assert_eq!(v, [1, 1, 1]);

Notez que, contrairement aux expressions de tableau, cette syntaxe prend en charge tous les éléments implémentant Clone et que le nombre d'éléments n'est pas nécessairement constant.

Cette syntaxe utilise clone pour dupliquer une expression ; il faut donc être prudent avec les types dont l'implémentation Clone n'est pas standard. Par exemple, vec![Rc::new(1); 5] crée un vecteur de cinq références à la même valeur entière encadrée, et non de cinq références pointant vers des entiers encadrés indépendamment.

Notez également que vec![expr; 0] est autorisé et produit un vecteur vide. Cependant, expr sera toujours évalué et la valeur résultante sera immédiatement supprimée ; soyez donc attentif aux effets secondaires.



Dernière mise à jour : Mardi, le 5 Août 2025