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 : opérateurs et symboles

Cette annexe contient un glossaire d’éléments de syntaxe de Rust, comprenant notamment les opérateurs et les autres symboles qui s’utilisent tout seuls ou dans le cadre de chemins, de génériques, de traits liés, de macros, d’attributs, de commentaires, de tuples et des crochets.

Opérateurs

Le tableau B-1 liste les opérateurs de Rust en indiquant pour chacun un exemple de la manière d’utilisation en situation, une brève explication, et si cet opérateur peut être surchargé. Si un opérateur est surchargeable, le trait à utiliser pour la surcharge est indiqué.

Tableau B-1 : opérateurs

OpérateurExempleExplicationSurchargeable ?
!ident!(...), ident!{...}, ident![...]Identificateur de macro
!!exprNégation binaire ou logiqueNot
!=expr != exprComparaison de non-égalitéPartialEq
%expr % exprModulo arithmétiqueRem
%=var %= exprModulo arithmétique et affectationRemAssign
&&expr, &mut exprEmprunt
&&type, &mut type, &'a type, &'a mut typeType de pointeur emprunté
&expr & exprET binaireBitAnd
&=var &= exprET binaire et affectationBitAndAssign
&&expr && exprRaccourci pour l’opérateur logique ET
*expr * exprMultiplication arithmétiqueMul
*=var *= exprMultiplication arithmétique et affectationMulAssign
**exprDéréférencementDeref
**const type, *mut typePointeur brut
+trait + trait, 'a + traitContrainte de type composé
+expr + exprAddition arithmétiqueAdd
+=var += exprAddition arithmétique et affectationAddAssign
,expr, exprSéparateur d’arguments et d’éléments
-- exprNégation arithmétiqueNeg
-expr - exprSoustraction arithmétiqueSub
-=var -= exprSoustraction arithmétique et affectationSubAssign
->fn(...) -> type, |…| -> typeType de retour de fonction et de 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éraux de structure
..variant(x, ..), struct_type { x, .. }Correspondance de motif “Et le reste”
...expr...expr(Obsolète, utiliser ..= à la place) Dans un motif : motif d’intervalle inclusif
/expr / exprDivision arithmétiqueDiv
/=var /= exprDivision arithmétique et affectationDivAssign
:pat: type, ident: typeContraintes
:ident: exprInitialisateur de champ de structure
:'a: loop {...}Étiquette de boucle
;expr;Fin d’élément et d’instruction
;[...; len]Partie de la syntaxe de tableau de taille fixe
<<expr << exprDécalage à gaucheShl
<<=var <<= exprDécalage à gauche et affectationShlAssign
<expr < exprComparaison “inférieur à”PartialOrd
<=expr <= exprComparaison “inférieur ou égal à”PartialOrd
=var = expr, ident = typeAffectation ou é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 affectationShrAssign
@ident @ patCorrespondance de motif
^expr ^ exprOU exclusif binaireBitXor
^=var ^= exprOU exclusif binaire et affectationBitXorAssign
|pat | patAlternatives dans un motif
|expr | exprOU exclusif binaireBitOr
|=var |= exprOU exclusif binaire et affectationBitOrAssign
||expr || exprRaccourci pour OU logique
?expr?Propagation d’erreur

Symboles autres que les opérateurs

Les tableaux suivants listent tous les symboles qui ne fonctionnent pas comme des opérateurs ; autrement dit, ils ne se comportent pas comme un appel de fonction ou de méthode.

Le tableau B-2 liste les symboles qui s’utilisent tout seuls et qui sont valides dans divers contextes.

Tableau B-2 : éléments de syntaxe autonomes

SymboleExplication
'identDurée de vie nommée ou étiquette de boucle
Nombres suivis immédiatement par u8, i32, f64, usize et ainsi de suiteLittéral numérique d’un type déterminé
"..."Littéral de chaîne de caractères
r"...", r#"..."#, r##"..."## et ainsi de suiteLittéral brut de chaîne de caractères ; caractères d’échappement non traités
b"..."Littéral de chaîne d’octets ; construit un tableau d’octets au lieu d’une chaîne de caractères
br"...", br#"..."#, br##"..."## et ainsi de suiteLittéral brut de chaîne d’octets ; combinaison du littéral brut de chaîne et du littéral de chaîne d’octets
'...'Littéral de caractère
b'...'Littéral d’octet ASCII
|…| exprFermeture
!Type “jamais”, toujours vide pour les fonctions divergentes
_Motif “ignoré” ; également utilisé pour rendre lisibles les littéraux d’entiers

Le tableau B-3 liste les symboles qui s’utilisent dans le contexte d’un chemin dans une hiérarchie de modules pour obtenir un élément.

Tableau B-3 : éléments de syntaxe utilisés pour les chemins

SymboleExplication
ident::identChemin d’espace de nommage
::pathChemin relatif à la crate racine (autrement dit, un chemin explicitement absolu)
self::pathChemin relatif au module courant (autrement dit, un chemin explicitement relatif)
super::pathChemin relatif au 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]>::... et ainsi de suite)
trait::method(...)Éviter toute ambiguïté dans un appel de méthode en précisant le trait qui la définit
type::method(...)Éviter toute ambiguïté dans un appel de méthode en précisant le type pour lequel elle est définie
<type as trait>::method(...)Éviter toute ambiguïté dans un appel de méthode en précisant le trait et le type

Le tableau B-4 liste les symboles qui apparaissent dans le cadre de l’utilisation de paramètres de type générique

Tableau B-4 : génériques

SymboleExplication
path<...>Précise les paramètres sur un type générique utilisé dans un type (par exemple, Vec<u8>)
path::<...>, method::<...>Précise les paramètres sur un type générique, une fonction ou une méthode dans une expression ; souvent appelé poisson-turbo (turbofish) (par exemple, "42".parse::<i32>()))
fn ident<...> ...Définition de fonction générique
struct ident<...> ...Définition de structure générique
enum ident<...> ...Définition d’énumération générique
impl<...> ...Définition d’implémentation générique
for<...> typeAugmentation de durée de vie
type<ident=type>Un type générique sur lequel un ou plusieurs types associés ont des affectations spécifiques (par exemple, Iterator<Item=T>)

Le tableau B-5 liste les symboles qui s’utilisent pour contraindre des paramètres de types génériques avec des traits liés.

Tableau Bound : contraintes de trait lié

SymboleExplication
T: UParamètre générique T contraint aux types qui implémentent U
T: 'aType générique T devant vivre au moins aussi longtemps que la durée de vie 'a (ce qui signifie que le type ne peut pas contenir temporairement de références avec une durée de vie inférieure à 'a)
T: 'staticType générique T ne contenant aucune référence empruntée autre que celles qui sont 'static
'b: 'aDurée de vie générique 'b devant vivre au moins aussi longtemps que la durée de vie 'a
T: ?SizedAutoriser un paramètre de type générique à être de type à taille dynamique
'a + trait, trait + traitContrainte de type composé

Le tableau B-4 liste les symboles qui s’utilisent dans le cadre de l’appel ou de la définition de macros et pour spécifier des attributs sur un élément.

Tableau B-6 : macros et attributs

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

Le tableau B-7 liste les symboles pour créer des commentaires.

Tableau B-7 : commentaires

SymboleExplication
//Ligne de commentaire
//!Ligne de commentaire de documentation sur l’élément contenant ce commentaire
///Ligne de commentaire de documentation sur l’élément suivant ce commentaire
/*...*/Bloc de commentaire
/*!...*/Bloc de commentaire de documentation sur l’élément contenant ce commentaire
/**...*/Bloc de commentaire de documentation sur l’élément suivant ce commentaire

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

Encart 9-3 : Ouverture d’un fichier

SymboleExplication
()Tuple vide (également appelé unité), littéral et type
(expr)Expression entre parenthèses
(expr,)Expression de tuple à élément unique
(type,)Type de tuple à élément unique
(expr, ...)Expression de tuple
(type, ...)Type tuple
expr(expr, ...)Expression d’appel de fonction ; également utilisé pour initialiser les variantes de struct et d’enum

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

Tableau B-9 : parenthèses

ContexteExplication
{...}Bloc d’expression
Type {...}Littéral de structure

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

Tableau B-10 : 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]Collection indexée  ; surchargeable via (Index, IndexMut)
expr[..], expr[a..], expr[..b], expr[a..b]Collection indexée se comportant comme une slice de collection, grâce à l’utilisation de Range, RangeFrom, RangeTo, ou de RangeFull comme “indice”