Blog ENI : Toute la veille numérique !
Accès illimité 24h/24 à tous nos livres & vidéos ! 
Découvrez la Bibliothèque Numérique ENI. Cliquez ici
💥 Les 22 & 23 novembre : Accès 100% GRATUIT
à la Bibliothèque Numérique ENI. Je m'inscris !
  1. Livres et vidéos
  2. Rust - Développez des programmes robustes et sécurisés

Rust Développez des programmes robustes et sécurisés

5 avis

Informations

Livraison possible dès le 25 novembre 2024
  • Livraison à partir de 0,01 €
  • Version en ligne offerte pendant 1 an
Livres rédigés par des auteurs francophones et imprimés à Nantes

Caractéristiques

  • Livre (broché) - 17 x 21 cm
  • ISBN : 978-2-409-03528-9
  • EAN : 9782409035289
  • Ref. ENI : EIRUST

Informations

  • Consultable en ligne immédiatement après validation du paiement et pour une durée de 10 ans.
  • Version HTML
Livres rédigés par des auteurs francophones et imprimés à Nantes

Caractéristiques

  • HTML
  • ISBN : 978-2-409-03529-6
  • EAN : 9782409035296
  • Ref. ENI : LNEIRUST
Découvrez Rust, idéal pour les développeurs C/C++, Python ou C#. Apprenez la gestion de la mémoire, la propriété, et l'emprunt. Explorez les modules, caisses (crates), structures et énumérations. Plongez dans les traits, closures et collections essentielles. Le livre inclut aussi une introduction à WebAssembly et présente des techniques avancées pour une maîtrise complète de Rust, enrichissant votre expertise en programmation sécurisée.
Consulter des extraits du livre en ligne Aperçu du livre papier
  • Niveau Confirmé à Expert
  • Nombre de pages 362 pages
  • Parution mai 2022
  • Niveau Confirmé à Expert
  • Parution mai 2022
Ce livre sur le langage Rust s'adresse en premier lieu aux développeurs connaisseurs du C/C++, voire de langages comme Python ou C#, désireux d'apprendre ce langage adapté à la programmation système sécurisée.

Les premiers chapitres permettent de rendre accessible le propos, non seulement à un public issu du monde C++, mais également à un public connaisseur du développement logiciel via un langage plus éloigné. Ainsi, les concepts fondamentaux du langage sont étudiés, notamment la gestion de la mémoire impliquant le tas (heap) et la pile (stack). Les notions centrales en Rust que sont la propriété et l'emprunt font également l'objet de larges développements. La gestion de la mémoire est également abordée du point de vue de l'usage du multithreading.

Puis, au fil de la lecture, vous explorez également les notions de modules et de caisses (crates), de structures, d’énumérations et de filtrage par motif ainsi que les traits, les closures et les principales collections utilisées en Rust. Un chapitre est également consacré à la notion de WebAssembly, ainsi qu'un autre aux notions avancées en Rust.

Des éléments complémentaires sont en téléchargement sur le site www.editions-eni.fr.


Quizinclus dans
la version en ligne !
  • Testez vos connaissances à l'issue de chaque chapitre
  • Validez vos acquis

Téléchargements

Avant-propos
  1. Introduction
Comment et pourquoi Rust ?
  1. Introduction
  2. Contexte d'invention et nature du langage Rust
  3. Pourquoi le langage Rust ?
    1. 1. La question de la gestion de la mémoire
      1. a. La pile
      2. b. Le tas
      3. c. Le typage sûr
    2. 2. La question de la gestion concurrentielle des threads
      1. a. Contexte d’utilisation du parallélisme
      2. b. Situation de compétition
      3. c. L’enfer de l’exclusion mutuelle
  4. Conclusion
Commençons à utiliser concrètement Rust
  1. Installation et exploration
    1. 1. L’outil rustup
    2. 2. L’outil central : cargo
      1. a. Versions installées
      2. b. Un premier projet
      3. c. Analyse et explications relatives au premier projet
      4. d. Commandes principales cargo
  2. Premiers travaux en Rust
    1. 1. Un premier exemple de programme Rust
    2. 2. Exécution du programme
    3. 3. Compléments apportés au programme
  3. Outils complémentaires autour du projet réalisé
    1. 1. Un mot sur les tests unitaires en Rust
    2. 2. Un mot sur l’organisation par module
    3. 3. Un mot sur la ligne de commande
  4. Nommons les choses - Un peu de vocabulaire
    1. 1. Introduction
    2. 2. Petit lexique du langage Rust
      1. a. Mutabilité
      2. b. Structure (struct)
      3. c. Trait et générique
      4. d. Caisse (crate) et module
      5. e. Propriété et emprunt
  5. Conclusion
Types, structures de données en Rust
  1. Introduction
  2. Les types primitifs simples
    1. 1. Types numériques entiers
      1. a. Entiers signés
      2. b. Entiers non signés
      3. c. Entiers codés d’après la tailledu processeur
    2. 2. Types numériques flottants
    3. 3. Le type booléen
    4. 4. Le type char
  3. Les types primitifs, structures de données
    1. 1. Le tuple
    2. 2. La structure struct
      1. a. Structure, cas général
      2. b. Structure et mutabilité
      3. c. Le tuple structure
  4. Les types pointeurs en Rust
    1. 1. Références en Rust
    2. 2. Boîte (box) en Rust
    3. 3. Pointeurs bruts (raw pointers) en Rust
  5. Les types tableaux, vecteurs et tranches
    1. 1. Introduction
    2. 2. Les tableaux en Rust
    3. 3. Les vecteurs en Rust
    4. 4. Les tranches en Rust
  6. Le type chaîne de caractères (string)
    1. 1. Introduction
    2. 2. Cas pratique autour de string
  7. Conclusion
Possession et emprunt en Rust
  1. Introduction
    1. 1. Le tas et la pile
    2. 2. Utilité de la possession
  2. Fonctionnement de la possession
    1. 1. Grands principes
    2. 2. Exemples relatifs à la propriété
      1. a. Propriété dans le tas
      2. b. Propriété dans la pile
    3. 3. Plus loin avec la propriété :usage avec fonctions
      1. a. Passage de valeur à une fonction
      2. b. Retour de fonction
    4. 4. Conclusion à propos de la possession
  3. Fonctionnement de l'emprunt
    1. 1. Introduction
    2. 2. Exemple : transfert de propriété vsemprunt
      1. a. Transfert de propriété
      2. b. Emprunt
    3. 3. Emprunt à base de référencesmutables
  4. Conclusion
Structures en Rust
  1. Premières structures en Rust
    1. 1. Introduction
    2. 2. Structure à champs nommés
      1. a. Syntaxe
      2. b. La question de la visibilité
    3. 3. Structure - « tuple »
    4. 4. Structure - unité
    5. 5. Un mot de l’implantation mémoire d’une structure
  2. Les méthodes de structure en Rust
    1. 1. Prototype des méthodes
    2. 2. Usage du mot-clé self
    3. 3. Un exemple d’utilisation des méthodes
    4. 4. Vers les méthodes statiques en Rust
  3. Structure générique
    1. 1. Introduction
    2. 2. Exemple support
    3. 3. Exemple support augmenté
  4. La question des références dans une structure
    1. 1. Introduction
    2. 2. Mise en évidence du besoin d’annotation dedurée de vie
    3. 3. Durée de vie basée sur le mot-clé static
  5. Notion de traits appliqués aux structures
    1. 1. Introduction
    2. 2. Les traits prédéfinis appliquésaux structures
  6. Conclusion
Énumérations et motifs en Rust
  1. Introduction
  2. Les énumérations en Rust
    1. 1. Premiers exemples
    2. 2. Exemple de conversion d’entiers vers une énumération
      1. a. Les options dans la librairie standard
      2. b. Premiers filtrages par motif
    3. 3. Un mot sur les méthodes d’énumération
    4. 4. Utiliser des structures dans des énumérations
      1. a. Introduction
      2. b. Exemple d’utilisation
    5. 5. Les énumérations génériques
      1. a. Exemple dans la librairie standard
      2. b. Arbre binaire avec une énumérationgénérique
  3. Filtrage par motif
    1. 1. Premier exemple, pour rappel
    2. 2. Plus loin avec les motifs
Les traits en Rust
  1. Introduction
  2. Premier trait en Rust
    1. 1. Création d’une caisse et d’un exécutableclient
    2. 2. Définition d’un trait
  3. Utiliser un trait en paramètre
    1. 1. Introduction
    2. 2. Exemple de trait en paramètre
    3. 3. Plusieurs paramètres d’un même traiten paramètre
  4. Notion de trait lié
    1. 1. Introduction
    2. 2. Plusieurs traits liés différentspour un même paramètre
      1. a. Introduction
      2. b. Le trait prédéfini Display
      3. c. Création de la structure Tortue
      4. d. Un mot sur la clause where
  5. Un trait comme valeur de retour
    1. 1. Introduction
    2. 2. Exemple support
  6. Points d'architecture impliquant les traits
    1. 1. Traits, génériques et structures
    2. 2. Un mot sur les sous-traits
Les traits prédéfinis en Rust
  1. Introduction
  2. Des traits prédéfinis essentiels : les itérateurs
  3. Notion de surcharge d'opérateurs
    1. 1. Introduction
    2. 2. Les opérateurs surchargeables
    3. 3. Exemple support
      1. a. Contexte des nombres complexes
      2. b. Premiers éléments de programmation
      3. c. Surcharges des opérateurs + et -
      4. d. Surcharges de la comparaison
  4. Inventaire et usage de quelques traits prédéfinis
    1. 1. L’usage de Derive
      1. a. Explications
      2. b. Exemple support
    2. 2. Inventaire des traits
      1. a. Introduction
      2. b. Le trait Drop
      3. c. Les traits Deref et DerefMut
      4. d. Le trait Default
      5. e. Le trait From
Les chaînes de caractères en Rust
  1. Introduction
  2. Encodages Unicode et UTF-8 et caractères en Rust
    1. 1. Quelques définitions
    2. 2. Encodage en Rust
      1. a. Le type char et l’Unicode
      2. b. Les types String et str et l’UTF-8
  3. À la découverte des caractères (char) en Rust
    1. 1. Nature des caractères
    2. 2. Casse des caractères
    3. 3. Conversion vers un entier
  4. À la découverte de String et str
    1. 1. Introduction
    2. 2. Le type str
    3. 3. Le type String
      1. a. Construction du type
      2. b. Création d’un String
      3. c. Premiers outils autour de String
      4. d. Insertion dans un String
      5. e. Suppression avec un String
      6. f. Recherche et remplacement dans un String
  5. Un mot sur les expressions régulières
Les vecteurs en langage Rust
  1. Introduction
  2. Le vecteur Vec<t></t>
    1. 1. Introduction
    2. 2. Accès aux éléments (référenceet copie)
    3. 3. Méthodes avancées d’accès
    4. 4. Considérations sur la taille et la capacité
    5. 5. Ajouts et retraits de valeurs
    6. 6. Autres opérations sur vecteurs
    7. 7. Un mot sur le tri de vecteurs
    8. 8. Un mot sur la recherche dans un vecteur
Autres collections en langage Rust
  1. Introduction
  2. La collection VecDeque<t></t>
    1. 1. Présentation
    2. 2. Utilisation de VecDeque<t></t>
  3. La collection LinkedList<t></t>
    1. 1. Présentation
    2. 2. Utilisation simple de LinkedList<t></t>
  4. La collection BinaryHeap<t></t>
    1. 1. Présentation
    2. 2. Utilisation de BinaryHeap<t></t>
  5. Table de hachage HashMap<key, value=""></key,>
    1. 1. Présentation
    2. 2. Utilisation de HashMap<key, value=""></key,>
    3. 3. Un mot sur la collection BTreeMap<key, value=""></key,>
  6. Approche ensembliste avec HashSet<t></t>
    1. 1. Présentation
    2. 2. Utilisation de HashSet<t></t>
    3. 3. Un mot sur la collection BTreeSet<t></t>
  7. Conclusion
Les closures en Rust
  1. Introduction
  2. Considérations théoriques
  3. Première utilisation d'une closure
  4. Tri facile avec une closure
  5. Les closures, résumé des premières notions
  6. Considérations sur les traits FnOnce, FnMut et Fn
    1. 1. Explications du fonctionnement général
    2. 2. Le mot-clé move
Les threads et le multithreading en Rust
  1. Introduction
  2. Premiers threads et parallélisme
    1. 1. Introduction
    2. 2. Usage de spawn
      1. a. Introduction
      2. b. Premier exemple concret
    3. 3. Attendre la fin des threads secondaires (Fork-Join)
    4. 4. L’alternative rayon
      1. a. Premier exemple
      2. b. Un peu de parallélisme
  3. Communication entre threads
    1. 1. Introduction
    2. 2. Usage des canaux en Rust
      1. a. Définition
      2. b. Première utilisation d’un canal
      3. c. Considérations sur la sécurisationdu canal
      4. d. Envois multiples dans le canal
  4. Usage des verrous mutuels exclusifs
    1. 1. Présentation et définition
    2. 2. Les structures Rc et Arc
      1. a. Introduction
      2. b. Rc<t></t>
      3. c. Arc<t></t>
    3. 3. Usage de Mutex
Rust et WebAssembly
  1. Introduction
    1. 1. Première considération
    2. 2. Explications de WebAssembly
  2. Exemple détaillé de WebAssembly
    1. 1. Installation d’outils
    2. 2. Exemple détaillé
      1. a. Introduction
      2. b. Développement côté Rust
      3. c. Développement côté JavaScript
  3. Pour aller plus loin
    1. 1. Quelques caisses utiles
      1. a. Caisse wasm-bindgen
      2. b. Caisse console_error_panic_hook
      3. c. Caisse console_log
    2. 2. Le gestionnaire de paquets npm
      1. a. Introduction
      2. b. Déploiement sur npm
Notions avancées en Rust
  1. Introduction
  2. Les objets-traits
    1. 1. Présentation
    2. 2. La surcharge statique
    3. 3. La surcharge dynamique
      1. a. Introduction
      2. b. Contexte de l’exemple
      3. c. Définition d’un trait dédiée à lasurcharge dynamique
      4. d. Usage du mot-clé dyn
  3. Le code Rust non sûr
    1. 1. Introduction
    2. 2. Déréférencer un pointeurbrut
    3. 3. Modifier une variable statique mutable
    4. 4. Implémenter des traits non sécurisés
Projet final : coder et publier une caisse
  1. Introduction
  2. Périmètre fonctionnel
  3. Développement Rust de la librairie
  4. Autres aspects et tests de la caisse
  5. Publication de la caisse
4,6/5 5 avis
Version en ligne

Ce livre correspond bien à ce que je recherchais, j'apprécie que l'auteur explique bien la gestion de la mémoire même si je connaissais pas mal de concepts ayant travaillé en C et du C , ces notions sont les plus importantes à comprendre pour être un bon développeur. J'aurais aimé simplement que l'auteur aille un peu plus en profondeur sur le multi threading avec Rust. Peut-être un autre livre plus avancé plus tard ? Mais bien sûr, je recommande à 100% ce livre très pédagogique. J'ai commencé à faire de petits projets en Rust et Slint pour m'eguiser, et je vais regarder du WebAssembly histoire de s'instruire

Nicolas F
Version papier

très bien

Anonyme
Version papier

Actuellement je suis à la moitié de ma lecture de l'ouvrage mais le contenu correspond déjà à ce que j'attendais.

Anonyme
Version papier

Les exemples sont détaillés et clairs

Anonyme
Auteur : Benoît PRIEUR

Benoît PRIEUR

Benoît PRIEUR est ingénieur logiciel et enseignant en informatique, diplômé de l'ISIMA de Clermont-Ferrand. Avec une expérience de vingt ans, il est spécialisé dans le développement logiciel, notamment avec les langages Python, C++, Rust et C#. Il est également expert en Machine Learning, en particulier dans le domaine du NLP et auteur de plusieurs ouvrages aux Éditions ENI depuis 2017, couvrant un large éventail de sujets tels que l'informatique quantique, l'industrie 4.0 et le Machine Learning. En tant que formateur et conférencier, il partage régulièrement ses connaissances sur ces technologies émergentes, et contribue à la communauté en écrivant des articles sur la programmation de logiciels.
Benoît Prieur reverse 100 % de ses droits d'auteur du livre Traitement automatique du langage naturel avec Python à l'association AGBU (Union générale arménienne de bienfaisance).


En savoir plus

Découvrir tous ses livres

  • OCaml De la syntaxe de base à la programmation fonctionnelle
  • Traitement automatique du langage naturel avec Python Le NLP avec spaCy et NLTK
  • Pygame Coffret de 2 livres : Développement de jeux vidéo en Python (2e édition)
  • Vulgarisation de l'informatique quantique
  • Pygame Initiez-vous au développement de jeux vidéo en Python (2e édition)
  • Python, Raspberry Pi et Flask - Données télémétriques et tableaux de bord web Livre avec complément vidéo : Création d'une application web avec Flask
  • PyQt5 Développez vos interfaces graphiques en Python
  • Flask Développez vos applications web en Python
  • Informatique quantique De la physique quantique à la programmation quantique en Q#
  • WPF Développez des applications structurées (MVVM, XAML...) (Nouvelle édition)

Nos nouveautés

voir plus