Introduction

Le livre est la référence principale du langage de programmation Rust. Il fournit trois types de contenu :

  • Des chapitres qui décrivent formellement chaque concept du langage et son utilisation.
  • Des chapitres qui décrivent formellement le système de mémoire, le système de concurrence, les services à l'exécution, le système de liaison, et les outils de débogage.
  • Des chapitres en annexes qui fournissent les justifications et les références aux langages qui ont influencé la conception de Rust.

Attention : ce livre est incomplet. Cela prend du temps de tout documenter. Consultez les tickets sur GitHub pour voir ce qui n'est pas encore documenté dans ce livre.

Ce que n'est pas La référence

Ce livre n'a pas vocation à présenter le langage. Il suppose que vous êtes suffisamment familier avec le langage. Un livre dédié à cette familiarisation est disponible séparément (disponible aussi en version anglaise).

Ce livre n'a pas non plus pour vocation de servir de référence à la bibliothèque standard livrée avec le langage. Cette bibliothèque est documentée séparément en extrayant les attributs de la documentation de son code source. De nombreuses fonctionnalités dont on pourrait s'attendre à ce qu'elles soient fournies par le langage sont en fait fournies par des bibliothèques en Rust, donc ce que vous cherchez se trouvera peut-être là-bas et non ici.

Pour les mêmes raisons, ce livre ne documente pas spécialement les particularités liées aux outils rustc ou Cargo. rust a son propre livre. Cargo a aussi un livre qui embarque aussi une référence. Nous avons cependant certaines pages comme par exemple les liaisons qui décrivent quand même un peu comment rustc fonctionne.

Ce livre sert de référence uniquement à ce qui est disponible en Rust stable. Pour en savoir plus sur les fonctionnalités instables qui sont en cours de construction, consultez le Unstable Book.

Enfin, ce livre n'est pas une norme. Il peut expliquer des détails qui sont spécifiques à rustc, et ne doivent pas être mélangé avec les spécifications du langage Rust. Nous avons l'intention d'écrire un livre dédié à cela un jour, mais en attendant, cette présente référence est celle qui s'en approche le plus.

Comment utiliser ce livre

Ce livre ne nécessite pas que vous le lisiez dans l'ordre. En général, chaque chapitre peut être lu de manière indépendante, mais peut s'entrecroiser avec d'autres chapitres à propos d'autres aspects du langage, mais qu'il ne traitera pas.

Il y a deux manières de lire ce document.

La première est pour répondre à une question précise. Si vous savez quel chapitre répond à votre question, vous pouvez vous rendre à ce chapitre avec la table des matières. Sinon, vous pouvez appuyer sur s ou cliquer sur la loupe dans la barre du haut pour rechercher des mots-clés en lien avec votre question. Par exemple, imaginons que vous souhaitiez savoir quand une valeur temporaire créée dans une instruction let est libérée. Si vous ne savez connaissez pas le chapitre durée de vie des éléments temporaires qui est défini dans le chapitre des expressions, vous pouvez alors chercher let temporaire et le premier résultat devrait vous amener à cette section.

La seconde manière améliore votre connaissance générale sur des parties précises du langage. Dans ce cas, il vous suffit de parcourir la table des matières jusqu'à ce que vous voyez quelque chose d'intéressant, puis cliquez dessus pour commencer à lire. Et si vous découvrez des liens intéressants pendant votre lecture, n'hésitez pas à l'ouvrir.

Ceci étant dit, il n'y a pas de mauvaise manière de parcourir ce livre. Donc, lisez-le comme bon vous semble !

Les règles

Comme tout livre technique, ce livre suit certaines règles qui définissent comment présenter les informations. Cette partie décrit donc ici ces règles.

  • Les parties qui définissent un terme contiennent ce terme sont en italique. A chaque fois que ce terme est utilisé en dehors de la section qui la définit, il y aura généralement un lien vers cette définition.

    Un exemple de terme est un exemple d'un terme qui est en train d'être défini.

  • Les différences entre les éditions du langage dans lesquelles la crate est compilée sont signalées dans des blocs de citation qui commencent par les mots "Différences entre les éditions :" en gras.

    Différences entre les éditions : dans l'édition 2015, cette syntaxe est valide, alors qu'elle est interdite dans l'édition 2018.

  • Les remarques qui contiennent des informations importantes sur le statut de ce livre ou qui signalent des informations utiles mais souvent hors de la portée du livre sont placées dans des blocs de citation qui commencent par le mot "Remarque :" en gras.

    Remarque : ceci est un exemple de remarque.

  • Les avertissements qui mettent en évidence un comportement dangereux ou ambigü du langage sont insérés dans des boites d'avertissement spéciales.

    Avertissement : ceci est un exemple d'avertissement.

  • Les extraits de code insérés directement dans le texte sont placés dans des balises <code>.

    Les exemples de code plus conséquents sont placés dans des boites de code à coloration syntaxique afin de plus facilement copier, exécuter, et afficher les lignes via les contrôles dans le coin en haut à droite.

  • La grammaire et structure lexicale sont placés dans des blocs de citation avec en première ligne "Lexer" ou "Syntaxe" en exposant gras.

    Syntaxe
    ExempleDeGrammaire:
          ~ Expression
       | box Expression

    Consultez la page Annotation pour en savoir plus.

Contribuer

Nous sommes ouverts aux contributions de n'importe quel type.

Vous pouvez contribuer à ce livre en ouvrant un ticket ou envoyer une Pull Request dans le dépôt de la référence Rust. Si ce livre ne répond pas à votre question, que vous jugez que la réponse rentre dans le cadre du livre, n'hésitez pas à ouvrir un ticket ou parlez-en dans les canaux #docs du Discord. Cela nous permet d'en savoir plus sur la manière dont les gens utilisent ce livre pour prioriser l'optimisation de ces sections.

Si vous souhaitez contribuer à la traduction de ce livre en français, vous pouvez faire de même dans le dépôt GitHub rust-reference-fr.