Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Annexe B : les opérateurs et les symboles

Cette annexe contient un glossaire de la syntaxe de Rust, qui comprend les opérateurs et d’autres symboles qui apparaissent seuls ou dans le contexte de chemins, de génériques, de limites de traits, de macros, d’attributs, de commentaires, de tuples et de crochets.

Les opérateurs

Le tableau B-1 contient les opérateurs de Rust, un exemple montrant comment l’opérateur pourrait apparaître en contexte, une courte explication, et si cet opérateur est surchargeable. Si un opérateur est surchargeable, le trait correspondant à utiliser pour le surcharger est indiqué.

Tableau B-1 : les opérateurs

OpérateurExempleExplicationSurchargeable ?
!ident!(...), ident!{...}, ident![...]Expansion de macro
!!exprComplément binaire ou logiqueNot
!=expr != exprComparaison de non-égalitéPartialEq
%expr % exprReste arithmétiqueRem
%=var %= exprReste arithmétique et assignationRemAssign
&&expr, &mut exprEmprunt
&&type, &mut type, &'a type, &'a mut typeType de pointeur emprunté
&expr & exprET binaireBitAnd
&=var &= exprET binaire et assignationBitAndAssign
&&expr && exprET logique avec court-circuit
*expr * exprMultiplication arithmétiqueMul
*=var *= exprMultiplication arithmétique et assignationMulAssign
**exprDéréférencementDeref
**const type, *mut typePointeur brut
+trait + trait, 'a + traitContrainte de type composée
+expr + exprAddition arithmétiqueAdd
+=var += exprAddition arithmétique et assignationAddAssign
,expr, exprSéparateur d’arguments et d’éléments
-- exprNégation arithmétiqueNeg
-expr - exprSoustraction arithmétiqueSub
-=var -= exprSoustraction arithmétique et assignationSubAssign
->fn(...) -> type, |…| -> typeType de retour d’une fonction ou d’une fermeture
.expr.identAccès à un champ
.expr.ident(expr, ...)Appel de méthode
.expr.0, expr.1, et ainsi de suiteIndexation de tuple
...., expr.., ..expr, expr..exprLittéral d’intervalle exclusif à droitePartialOrd
..=..=expr, expr..=exprLittéral d’intervalle inclusif à droitePartialOrd
....exprSyntaxe de mise à jour de littéral de structure
..variant(x, ..), struct_type { x, .. }Motif “et le reste”
...expr...expr(Déprécié, utilisez ..= à la place) Dans un motif : motif d’intervalle inclusif
/expr / exprDivision arithmétiqueDiv
/=var /= exprDivision arithmétique et assignationDivAssign
:pat: type, ident: typeContraintes
:ident: exprInitialiseur de champ de structure
:'a: loop {...}Étiquette de boucle
;expr;Fin d’instruction et d’élément
;[...; len]Partie de la syntaxe de tableau à taille fixe
<<expr << exprDécalage à gaucheShl
<<=var <<= exprDécalage à gauche et assignationShlAssign
<expr < exprComparaison inférieur àPartialOrd
<=expr <= exprComparaison inférieur ou égal àPartialOrd
=var = expr, ident = typeAssignation/équivalence
==expr == exprComparaison d’égalitéPartialEq
=>pat => exprPartie de la syntaxe d’une branche de match
>expr > exprComparaison supérieur àPartialOrd
>=expr >= exprComparaison supérieur ou égal àPartialOrd
>>expr >> exprDécalage à droiteShr
>>=var >>= exprDécalage à droite et assignationShrAssign
@ident @ patLiaison de motif
^expr ^ exprOu exclusif binaireBitXor
^=var ^= exprOu exclusif binaire et assignationBitXorAssign
|pat | patAlternatives de motif
|expr | exprOu binaireBitOr
|=var |= exprOu binaire et assignationBitOrAssign
||expr || exprOu logique avec court-circuit
?expr?Propagation d’erreur

Les symboles non-opérateurs

Les tableaux suivants contiennent tous les symboles qui ne fonctionnent pas comme des opérateurs ; c’est-à-dire qu’ils ne se comportent pas comme un appel de fonction ou de méthode.

Le tableau B-2 montre les symboles qui apparaissent seuls et sont valides à divers emplacements.

Tableau B-2 : syntaxe autonome

SymboleExplication
'identDurée de vie nommée ou étiquette de boucle
Chiffres immédiatement suivis de u8, i32, f64, usize, etc.Littéral numérique d’un type spécifique
"..."Littéral de chaîne de caractères
r"...", r#"..."#, r##"..."##, et ainsi de suiteLittéral de chaîne brute ; les caractères d’échappement ne sont pas traités
b"..."Littéral de chaîne d’octets ; construit un tableau d’octets plutôt qu’une chaîne
br"...", br#"..."#, br##"..."##, et ainsi de suiteLittéral de chaîne d’octets brute ; combinaison de chaîne brute et d’octets
'...'Littéral de caractère
b'...'Littéral d’octet ASCII
|…| exprFermeture
!Type bas (bottom) toujours vide pour les fonctions divergentes
_Motif “ignoré” ; utilisé aussi pour rendre les littéraux entiers lisibles

Le tableau B-3 montre les symboles qui apparaissent dans le contexte d’un chemin à travers la hiérarchie de modules vers un élément.

Tableau B-3 : syntaxe relative aux chemins

SymboleExplication
ident::identChemin d’espace de noms
::pathChemin relatif à la racine de la crate (c’est-à-dire un chemin explicitement absolu)
self::pathChemin relatif au module courant (c’est-à-dire un chemin explicitement relatif)
super::pathChemin relatif au module parent du module courant
type::ident, <type as trait>::identConstantes, fonctions et types associés
<type>::...Élément associé pour un type qui ne peut pas être directement nommé (par exemple, <&T>::..., <[T]>::..., etc.)
trait::method(...)Désambiguïsation d’un appel de méthode en nommant le trait qui la définit
type::method(...)Désambiguïsation d’un appel de méthode en nommant le type pour lequel elle est définie
<type as trait>::method(...)Désambiguïsation d’un appel de méthode en nommant le trait et le type

Le tableau B-4 montre les symboles qui apparaissent dans le contexte de l’utilisation de paramètres de types génériques.

Tableau B-4 : les génériques

SymboleExplication
path<...>Renseigne les paramètres d’un type générique dans un type (par exemple, Vec<u8>)
path::<...>, method::<...>Renseigne les paramètres d’un type, d’une fonction ou d’une méthode générique dans une expression ; souvent appelé turbofish (par exemple, "42".parse::<i32>())
fn ident<...> ...Définit une fonction générique
struct ident<...> ...Définit une structure générique
enum ident<...> ...Définit une énumération générique
impl<...> ...Définit une implémentation générique
for<...> typeLimites de durée de vie de rang supérieur
type<ident=type>Un type générique où un où plusieurs types associés ont des assignations spécifiques (par exemple, Iterator<Item=T>)

Le tableau B-5 montre les symboles qui apparaissent dans le contexte de la contrainte de paramètres de types génériques avec des limites de traits.

Tableau B-5 : les contraintes de limites de traits

SymboleExplication
T: ULe paramètre générique T est contraint aux types qui implémentent U
T: 'aLe type générique T doit vivre au moins aussi longtemps que la durée de vie 'a (le type ne peut pas contenir transitivement de références avec des durées de vie plus courtes que 'a)
T: 'staticLe type générique T ne contient pas d’autres références empruntées que des références 'static
'b: 'aLa durée de vie générique 'b doit vivre au moins aussi longtemps que la durée de vie 'a
T: ?SizedAutorise le paramètre de type générique à être un type à taille dynamique
'a + trait, trait + traitContrainte de type composée

Le tableau B-6 montre les symboles qui apparaissent dans le contexte de l’appel ou de la définition de macros et de la spécification d’attributs sur un élément.

Tableau B-6 : les macros et les attributs

SymboleExplication
#[meta]Attribut externe
#![meta]Attribut interne
$identSubstitution de macro
$ident:kindMétavariable de macro
$(...)...Répétition de macro
ident!(...), ident!{...}, ident![...]Invocation de macro

Le tableau B-7 montre les symboles qui créent des commentaires.

Tableau B-7 : les commentaires

SymboleExplication
//Commentaire de ligne
//!Commentaire de documentation interne
///Commentaire de documentation externe
/*...*/Commentaire de bloc
/*!...*/Commentaire de documentation interne de bloc
/**...*/Commentaire de documentation externe de bloc

Le tableau B-8 montre les contextes dans lesquels les parenthèses sont utilisées.

Tableau B-8 : les parenthèses

SymboleExplication
()Tuple vide (aussi appelé unit), aussi bien en littéral qu’en type
(expr)Expression entre parenthèses
(expr,)Expression de tuple à un seul élément
(type,)Type de tuple à un seul élément
(expr, ...)Expression de tuple
(type, ...)Type de tuple
expr(expr, ...)Appel de fonction ; utilisé aussi pour initialiser les struct tuples et les variantes d’enum tuples

Le tableau B-9 montre les contextes dans lesquels les accolades sont utilisées.

Tableau B-9 : les accolades

ContexteExplication
{...}Expression de bloc
Type {...}Littéral de structure

Le tableau B-10 montre les contextes dans lesquels les crochets sont utilisés.

Tableau B-10 : les crochets

ContexteExplication
[...]Littéral de tableau
[expr; len]Littéral de tableau contenant len copies de expr
[type; len]Type de tableau contenant len instances de type
expr[expr]Indexation de collection ; surchargeable (Index, IndexMut)
expr[..], expr[a..], expr[..b], expr[a..b]Indexation de collection simulant un découpage de collection, en utilisant Range, RangeFrom, RangeTo ou RangeFull comme “index”