🚧 Attention, peinture fraîche !

Cette page a été traduite par une seule personne et n'a pas été relue et vérifiée par quelqu'un d'autre ! Les informations peuvent par exemple être erronées, être formulées maladroitement, ou contenir d'autres types de fautes.

Vous pouvez contribuer à l'amélioration de cette page sur sa Pull Request.

Annexe B : les opérateurs et les symboles

Cette annexe contient un glossaire de syntaxes Rust, comprenant les opérateurs et les autres symboles qui s'utilisent tout seuls ou alors dans le cadre de chemins, de génériques, de traits liés, de macros, d'attributs, de commentaires, de tuples, de crochets ou d'accolades.

Opérateurs

Le tableau B-1 contient une liste d'opérateurs en Rust, un exemple de comment l'opérateur devrait être utilisé dans ce contexte, une petite explication, et si cet opérateur est surchargeable. Si un opérateur est surchargeable, le trait concerné à utiliser pour la surcharge est indiqué.

Tableau B-1 : les opérateurs

OpérateurExempleExplicationSurchargeable ?
!ident!(...), ident!{...}, ident![...]Identificateur de macro
!!exprNĂ©gation binaire ou logiqueNot
!=var != 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
*expr * exprMultiplication arithmétiqueMul
*=var *= exprMultiplication arithmétique et assignationMulAssign
**exprDéréférencement
**const type, *mut typePointeur brut
+trait + trait, 'a + traitContrainte de type composé
+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 de fonction et de fermeture
.expr.identAccès à un membre
...., expr.., ..expr, expr..exprLittéral d'intervalle d'exclusion
..=..=expr, expr..=exprLittéral d'intervalle d'inclusion
....exprSyntaxe de mise à jour de litéraux de structure
..variant(x, ..), struct_type { x, .. }Motif “ainsi que la suite”
...expr...exprDans un motif : motif d'intervalle inclusif
/expr / exprDivision arithmétiqueDiv
/=var /= exprDivision arithmétique et assignationDivAssign
:pat: type, ident: typeContrainte
:ident: exprInitialisateur de champ de structure
:'a: loop {...}Une identification de boucle
;expr;Fin d'élément et d'instruction
;[...; len]Syntaxe désignant une partie d'un tableau à taille finie
<<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 ou Ă©quivalence
==expr == exprComparaison d'égalitéPartialEq
=>pat => exprSyntaxe d'une partie d'une branche correspondante
>expr > exprComparaison "supérieur à"PartialOrd
>=expr >= exprComparaison "supérieur ou égal à"PartialOrd
>>expr >> exprDĂ©calage Ă  droiteShr
>>=var >>= exprDĂ©calage Ă  droite et assignationShrAssign
@ident @ patCréation d'un identificateur à partir du motif
^expr ^ exprOU exclusif binaireBitXor
^=var ^= exprOU exclusif binaire et assignationBitXorAssign
|pat | patAlternatives Ă  un motif
|expr | exprOU binaireBitOr
|=var |= exprOU binaire et assignationBitOrAssign
||expr || exprOU logique
?expr?Propagation d'erreur

Les symboles non-opérateurs

La liste suivante contient tout ce qui n'est pas une lettre et qui ne fonctionne pas comme un opérateur ; autrement dit tout ce qui ne se comporte pas comme un appel de fonction ou de méthode.

Le tableau B-2 montre des symboles qui s'utilisent tout seuls et qui sont valables dans plusieurs situations.

Tableau B-2 : syntaxes autonomes

SymboleExplication
'identNom d'une durée de vie ou nom boucle
...u8, ...i32, ...f64, ...usize, etc.Nombre littéral d'un type spécifique
"..."Chaîne de caractère littérale
r"...", r#"..."#, r##"..."##, etc.Chaîne de caractères brute littérale, les caractères d'échappement ne sont pas traités
b"..."Chaîne d'octet littéral ; construit un [u8] au lieu d'une chaîne de caractères
br"...", br#"..."#, br##"..."##, etc.Chaîne d'octets brute littérale, combinaison de la chaîne d'octets brute et de la chaîne d'octets littérale
'...'Caractère littéral
b'...'Octet ASCII littéral
|...| exprUne fermeture
!Le type “jamais", toujours vide pour les fonctions divergentes
_Le motif “ignoré" ; aussi utilisé pour rendre lisibles les nombres entiers littéraux

Le tableau B-3 montre des symboles qui s'utilisent dans le contexte d'un chemin dans une structure de modules pour obtenir un élément.

Tableau B-3 : syntaxes utilisés pour les chemins

SymboleExplication
ident::identChemin d'un espace de nom
::pathChemin relatif Ă  la crate racine (c'est Ă  dire un chemin explicitement absolu)
self::pathChemin relatif au module courant (c'est Ă  dire un chemin explicitement relatif)
super::pathChemin relatif au parent du module courant
type::ident, <type as trait>::identDes constantes, fonctions et types associées
<type>::...Un élément associé pour un type qui ne peut pas être directement nommé (par exemple, <&T>::..., <[T]>::..., etc)
trait::method(...)Clarifier l'appel d'une méthode en nommant le trait qui le définit
type::method(...)Clarifier l'appel d'une fonction en nommant le type pour laquelle elle est définie
<type as trait>::method(...)Clarifier l'appel d'une méthode en nommant le trait et le type

Le tableau B-4 montre des symboles qui apparaissent dans le contexte d'utilisation de paramètres de type génériques.

Tableau B-4 : génériques

SymboleExplication
path<...>Précise des paramètres sur un type générique utilisé dans un type (par exemple, Vec<u8>)
path::<...>, method::<...>Précise des paramètres sur un type générique, une fonction, ou une méthode dans une expression ; parfois 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<...> typeAugmente la 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 montre des symboles qui s'utilisent pour contraindre des paramètres de type génériques avec des traits liés.

Tableau B-5 : 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 doit vivre 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 plus petite que 'a)
T : 'staticType générique T qui ne contient pas d'autres références empruntées autres que des 'static
'b: 'aLa durée de vie générique 'b doit vivre aussi longtemps que 'a
T: ?SizedPermet aux paramètres de type génériques d'être de type à taille dynamique
'a + trait, trait + traitContrainte de type composé

Le tableau B-6 montre des symboles qui s'utilisent lors 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:kindCapture de macro
$(…)…Répétition de macro
ident!(...), ident!{...}, ident![...]Appel d'une macro

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

Tableau B-7 : commentaires

SymboleExplication
//Ligne commentée
//!Commentaire de documentation sur l'élément contenant actuel
///Commentaire de documentation sur l'élément suivant ce commentaire
/*...*/Bloc de commentaire
/*!...*/Bloc de commentaire de documentation sur l'élément contenant actuel
/**...*/Bloc de commentaire de documentation sur l'élément suivant ce commentaire

Le tableau B-8 montre des symboles utilisés avec les tuples.

Tableau B-8 : les tuples

SymboleExplication
()Un tuple vide (aussi appelé unitaire), à la fois un type et un litéral
(expr)Une expression entre parenthèses
(expr,)Un tuple d'un seul Ă©lement qui est une expression
(type,)Un tuple d'un seul Ă©lement qui est un type
(expr, ...)Une expression dans un tuple
(type, ...)Un type dans un tuple
expr(expr, ...)Une expression d'appel à une fonction ; aussi utilisé pour initialiser une structure tuple ou une variante d'énumération tuple
expr.0, expr.1, etc.Utilisation d'indices sur un tuple

Le tableau B-9 montre les contextes d'utilisation des accolades.

Tableau B-9 : accolades

SymboleExplication
{...}Bloc d'expression
Type {...}Un littéral de struct

Le tableau B-10 montre les contextes d'utilisation des crochets.

Tableau B-10 : crochets

SymboleExplication
[...]Un littéral de tableau
[expr; len]Un littéral de tableau qui contient len copies de expr
[type; len]Un type de tableau qui contient len instances de type
expr[expr]Une collection indexée. C'est surchargeable (via Index et IndexMut)
expr[..], expr[a..], expr[..b], expr[a..b]Une collection indexée qui se comporte comme une slice de collection, grâce à l'utilisation de Range, RangeFrom, RangeTo, ou de RangeFull comme “indice”