• Aide
  • Eurêkoi Eurêkoi

Livre

Apprendre à programmer en Rust

Résumé

Les notions fondamentales pour une prise en main efficace du langage de programmation Rust, principalement utilisé pour la programmation système, les applications en ligne de commandes, les services réseaux et les systèmes embarqués. Avec des exemples et des exercices corrigés.


  • Éditeur(s)
  • Date
    • DL 2023
  • Langues
    • Français
  • Description matérielle
    • 1 vol. (175 p.) : ill. ; 24 cm
  • Collections
  • Sujet(s)
  • ISBN
    • 978-2-10-085285-7
  • Indice
  • Quatrième de couverture
    • Apprendre à programmer en Rust

      Rust est un langage de programmation système, compilé et multi-paradigme. C'est un croisement entre langage impératif (C), objet (C++), fonctionnel (Ocaml) et concurrent (Erlang). Il s'inspire des recherches en théories des langages de ces dernières années et des langages de programmation les plus populaires afin d'atteindre trois objectifs : rapidité, sécurité (en mémoire notamment) et concurrent (partage des données sécurisé entre tâches).

      Cet ouvrage vous permettra d'apprendre à développer en Rust en expliquant sa syntaxe, ses concepts mais aussi les fonctionnalités qui lui sont propres :

      • le borrow-checker
      • les durées de vie (lifetimes)
      • le filtrage par motif (pattern matching)
      • les expressions
      • les macros
      • et bien plus !

      Conçu comme un tutoriel, ce livre n'a pas pour but de faire une description exhaustive du langage mais de vous donner les clés pour vous en servir le plus rapidement possible.


  • Tables des matières
      • Apprendre à programmer en Rust

      • Guillaume Gomez

      • Dunod

      • Avant-propos 5
      • Introduction 13
      • Les bases de la programmation en Rust
      • 1 Mise en place des outils 17
      • L'éditeur de code17
      • Les outils de Rust17
      • 2 Premier programme 18
      • 3 Les variables 19
      • Variables constantes et mutables19
      • Les types19
      • Les slices21
      • 4 Conditions et pattern matching 22
      • lf/else if/else22
      • Comparaison de booléens23
      • Pattern matching23
      • Toujours plus loin25
      • 5 Les fonctions 27
      • Créer une fonction27
      • Utiliser une fonction28
      • Les macros en Rust29
      • 6 Les expressions 30
      • Différence entre expressions et déclarations30
      • Mise en pratique31
      • 7 Les boucles 33
      • While33
      • Loop33
      • For35
      • Énumération36
      • Les boucles nommées37
      • 8 Les enums 38
      • Utilisation38
      • Implémenter des méthodes sur une enum40
      • 9 Les structures 41
      • À quoi cela ressemble ?41
      • Déstructuration43
      • Les méthodes44
      • Syntaxe de mise à jour (ou « update syntax »)46
      • Destructeur47
      • 10 If let/while let 48
      • Qu'est-ce que le if let ?48
      • While let49
      • 11 Gestion des erreurs 51
      • Result51
      • Option52
      • Panic !54
      • Possibles améliorations54
      • 12 Cargo 56
      • Commencer un projet56
      • Gérer les dépendances57
      • Publier une crate sur crates.lo60
      • Utiliser des bibliothèques externes62
      • 13 Jeu du plus ou moins 63
      • La règle du jeu ;63
      • La solution64
      • Améliorations67
      • Les spécificités de Rust
      • 14 Le formatage des flux 71
      • Exemple de print! et println!71
      • Format!72
      • Toujours plus loin72
      • 15 Les traits 74
      • Définition74
      • Créer un trait75
      • Les supertraits77
      • Les derive traits78
      • Utilisations de traits79
      • 16 Généricité 80
      • La généricité en Rust80
      • Where85
      • 17 Propriété (ou ownership) 87
      • Intérêt de l'owernship87
      • Clone et Copy88
      • Les références89
      • 18 Durée de vie (ou lifetime) 92
      • Les durées de vies statiques92
      • Les durées de vie temporaires93
      • Types avec une référence comme champ94
      • Contraintes sur les durées de vie96
      • 19 Déréférencement 97
      • Implémentation98
      • Auto-déréférencement98
      • 20 Sized et String vs str 100
      • Str100
      • Le trait Sized100
      • String101
      • Vec vs slice102
      • 21 Les unions 103
      • Définition et propriété103
      • Mise en pratique104
      • Pattern macthing105
      • 22 Closure 106
      • Définition et utilité106
      • Fn107
      • Fnmut108
      • Fnonce108
      • 23 Projet multi fichiers 110
      • Lib.rs112
      • Un_fichier.rs112
      • Module1/mod.rs113
      • Module1/file1.rs113
      • Module 1/module2/mod.rs113
      • Module1/module2/file1.rs113
      • 24 Les macros 114
      • Fonctionnement114
      • Les arguments (ou flux de tokens)115
      • Les différents types « d'arguments »116
      • Répétition116
      • Pattern matching encore plus poussé118
      • Scope et exportation d'une macro119
      • Quelques macros utiles119
      • Petite macro mais grande économie de lignes120
      • 25 Box 122
      • Structure récursive122
      • Liste chaînée123
      • 26 Les itérateurs 125
      • Les itérateurs sur/liés à un type125
      • Les générateurs127
      • Conclusion128
      • Pour aller plus loin
      • 27 Les macros procédurales (ou proc-macros) 131
      • Définition131
      • Function-like macro132
      • Derive macro133
      • Macro attribut139
      • 28 Utiliser du code compilé en C avec les FFI 141
      • Les bases141
      • Interfaçage avec une bibliothèque C142
      • Interfacer les fonctions143
      • 29 Documentation et rustdoc 146
      • Génération de la documentation146
      • Ajouter de la documentation147
      • Documenter un module148
      • 30 Ajouter des tests 149
      • L'attribu #[test]149
      • L'attribut #[should_panic]150
      • Mettre les tests dans un dossier à part151
      • Écrire des suites de tests151
      • Tests dans la documentation ?152
      • Options de test152
      • Cacher des lignes153
      • 31 Rc et RefCell 155
      • RefCell155
      • Rc158
      • 32 Les threads 160
      • Un exemple tout simple160
      • Mutex161
      • Arc162
      • Les channels163
      • Utilisation détournée164
      • Empoisonnement de Mutex165
      • Autres façons d'utiliser les threads165
      • 33 Le réseau 166
      • Le client166
      • Le serveur167
      • Multi-client168
      • Gérer la perte de connexion169
      • Exemple d'échange de message entre un serveur et un client170
      • 34 Codes annexes 174
      • Écrire des nombres différemment174
      • Toujours plus de parenthèses174
      • Toujours plus vers le fonctionnel avec le slice pattern175
      • Une autre façon de faire des boucles infinies175
      • Calculer des factorielles avec un itérateur175

  • Origine de la notice:
    • Electre
  • Disponible - 681.25(07) GOM

    Niveau 3 - Informatique