Passer aux informations sur le produit
Programmation Rust
Programmation Rust
Description
Introduction au livre
Il couvre des fonctionnalités plus avancées et est plus convivial que le « Guide officiel de la programmation Rust » !

Ce livre montre comment les fonctionnalités de Rust, qui allient sécurité de la mémoire et concurrence fiable à des performances prévisibles, offrent aux programmeurs un meilleur contrôle sur la consommation de mémoire et l'utilisation du processeur.
Les programmeurs système expérimentés trouveront ce guide pratique utile pour apprendre à concilier avec succès performance et sécurité en Rust.
  • Vous pouvez consulter un aperçu du contenu du livre.
    Aperçu

indice
Préface du traducteur xii
Revue du lecteur bêta xvi
À partir de 19

CHAPITRE 1 : Programmeurs système, prenez votre envol avec des outils incontournables

Sécurité 3 : Réduire la charge de travail des programmeurs
Programmation parallèle 4 : Faites ce que vous voulez
Néanmoins, un rythme effréné à ne pas manquer
5 environnements de développement qui facilitent la collaboration

CHAPITRE 2 : Visite de Rust 6

Rustup et Cargo 7
Fonction Rust 10
Écrire et exécuter des tests unitaires 12
Gestion des arguments de ligne de commande 13
Création d'un service Web 18
Simultanéité 24
Système de fichiers et outils en ligne de commande 45

CHAPITRE 3 Types de base 54

Type numérique 57 de taille fixe
booléen type 67
Caractère 67
Tuple 69
Pointeur de type 71
Tableaux, vecteurs et tranches 74
Type de chaîne 81
Alias ​​de type 88
Aller plus loin 88

CHAPITRE 4 : Posséder et déménager 89

Propriété 91
Déplacement 96
Type de copie : Exception au déplacement 107
Rc et Arc : Propriété partagée 110

CHAPITRE 5 RÉFÉRENCES 114

Référence à la valeur 115
Références de manipulation 119
Sécurité de référence 125
Partagé contre
Changer 140
Face à la mer des objets 148

CHAPITRE 6 EXPRESSIONS 151

Langage d'expression 151
Priorité et associativité 153
Blocs et points-virgules 155
Déclaration 157
si et correspond à 159
si soit 162
Boucle 162
Flux de contrôle dans les boucles 164
retourner l'expression 166
Pourquoi Rust a des boucles 167
Appel de fonctions et de méthodes 169
Champs et éléments 171
Opérateur de référence 173
Opérateurs arithmétiques, bit à bit, de comparaison et logiques 173
Devoir 175
Moulage de caractères 175
Clojure 177
En avant, en avant ! 178

CHAPITRE 7 Gestion des erreurs 179

Panique 179
Résultat 182

CHAPITRE 8 CAISSES ET MODULES 198

Caisse 199
Module 204
Conversion d'un programme en bibliothèque 216
répertoire src/bin 218
Attribut 220
Tests et documentation 223
Spécification des dépendances 233
Publication d'une caisse sur crates.io 237
Espace de travail 239
Plus de choses cool 240

CHAPITRE 9 Structure 242

Structure 243 avec champs nommés
Structure de type tuple 246
Structure de type unité 247
Plan de structure 248
Définition des méthodes avec Impl 249
Constante d'association 254
Structure générique 255
Structure générique 257 avec paramètres de durée de vie
Structures génériques à paramètres constants 259
Implémentation des traits communs dans les types de structures 262
Variabilité interne 263

CHAPITRE 10 : Inium et motifs 268

Inium 269
Modèle 280
Vue d'ensemble 295

CHAPITRE 11 : CARACTÉRISTIQUES ET GÉNÉRIQUES 297

Utilisation des traits 299
Définition et mise en œuvre des traits 311
Appel de méthode avec tous les qualificateurs 321
Caractéristique 323, qui définit les relations entre les types
Ingénierie inverse liée 332
Caractéristique en tant que fondement 336

CHAPITRE 12 Surcharge de l'opérateur 337

Opérateurs arithmétiques et binaires 339
Comparaison équivalente 345
Comparaison des commandes 349
Index et IndexMut 352
Autres opérateurs 355

CHAPITRE 13 CARACTÉRISTIQUES D'UTILITÉ 357

Chute 359
Taille 362
Clone 366
Copie 367
Deref et DerefMut 368
Valeur par défaut 372
AsRef et AsMut 374
Emprunter et EmprunterMut 376
De et dans 378
TryFrom et TryInto 382
ToOwned 383
Emprunter + Posséder = Vache 384

CHAPITRE 14 Clôture 387

Capture des variables 389
Types de fonctions et de fermetures 392
Performance Clojure 395
Fermetures et sécurité 396
Rappel 403
Utilisation efficace de la fermeture 408

CHAPITRE 15 Itérateurs 411

Traits Iterator et IntoIterator 413
Création d'un itérateur 415
Adaptateur d'itérateur 423
Itérateurs consommateurs 443
Implémentation de votre propre itérateur 460

CHAPITRE 16 COLLECTION 466

Parcourir 467
Vec〈T〉 468
VecDeque〈T〉 486
Tas binaire〈T〉 489
HashMap〈KV〉 et BTreeMap〈KV〉 490
HashSet〈T〉 et BTreeSet〈T〉 498
Hachage 502
Utilisation d'un algorithme de hachage personnalisé 504
Allant plus loin que la collection standard 506

CHAPITRE 17 Chaînes de caractères et texte 507

Quelques informations générales sur Unicode 508
caractère 511
Chaîne et str 516
Valeurs de mise en forme 537
Expression régulière 552
Normalisation 555

CHAPITRE 18 Entrée et sortie 559

Leader et écrivain 560
Fichiers et répertoires 577
Réseautage 587

CHAPITRE 19 : Concurrence 590

Traitement parallèle Fork-Join 592
Canal 605
État partagé modifiable 620
Voici ce que signifie écrire du code concurrent en Rust 638

CHAPITRE 20 Programmation asynchrone 639

641 du synchrone à l'asynchrone
Client et serveur asynchrones 667
Contrats à terme intégrés et exécuteurs : quand est-il prudent de réévaluer les contrats à terme ? 689
Réglage de la broche 695
Quand est-il approprié d'utiliser du code asynchrone ? 703

CHAPITRE 21 Macro 706

Principes de base des macros 708
Macro intégrée 715
Débogage des macros 718
Création d'une macro JSON ! 719
Éviter les erreurs de syntaxe lors de la correspondance 733
On va encore plus loin avec les macro-règles ! 734

CHAPITRE 22 Code dangereux 736

Qu'est-ce qui vous met en danger ? 737
Bloc 739 non sécurisé
Exemple : Type de chaîne ASCII efficace 740
Fonction non sécurisée 743
Blocs non sécurisés vs. Fonctions non sécurisées 745
Action indéfinie 746
Caractéristique dangereuse 749
Pointeur brut 751
Réinterpréter la mémoire avec les syndicats 774
Correspondance syndicale 777
Emprunt syndical 777

CHAPITRE 23 Fonctions externes 778

Trouver des représentations de données communes 779
Déclaration des fonctions et variables externes 783
Utilisation des fonctions de la bibliothèque 785
Interface brute pour libgit2 790
Interface sécurisée 797 de libgit2
Conclusion 810

Recherche 812

Image détaillée
Image détaillée 1

Dans le livre
Le traducteur, qui aime tout voir sous un angle décalé, a eu des doutes tout au long du processus de traduction de ce livre en coréen, se disant : « Si je suis prudent, autant écrire du code sûr en C++. » Mais à chaque fois, cette phrase écrite par l'auteur expérimenté au début du chapitre 1 lui revenait en mémoire.
« Dire qu'on peut éviter les comportements indéfinis en C et C++ revient à dire qu'on peut gagner une partie d'échecs parce qu'on connaît les règles. » Je ne pouvais pas contester cela.

--- p.xiv

Le mot « paresseux » dans ce message d'erreur n'est pas péjoratif, mais plutôt un terme argotique de notre secteur pour désigner tout mécanisme qui reporte le calcul jusqu'à ce que la valeur soit réellement nécessaire.
En Rust, il est d'usage qu'un itérateur n'effectue que le minimum de travail nécessaire pour satisfaire chaque appel suivant, mais dans l'exemple précédent, il n'y a pas d'appel suivant du tout, donc rien ne se passe.

--- p.426

Bien sûr, la recherche binaire ne fonctionne que si les tranches sont effectivement triées dans l'ordre spécifié.
Sinon, les résultats seront aléatoires.
C'est comme dire : « Là où vous plantez des haricots, des haricots pousseront, et là où vous plantez des haricots rouges, des haricots rouges pousseront » (on récolte ce qu'on sème).

--- p.483

Au début, écrire du code concurrent est facile et amusant.
Des outils comme les threads, les verrous et les files d'attente sont faciles à choisir et à utiliser sans aucune hésitation.
Il est vrai qu'il existe de nombreux pièges, mais heureusement, ce sont tous des problèmes bien connus, il suffit donc de faire attention à ne pas commettre d'erreurs.
Puis, au fil du temps, lorsque vous vous retrouvez à devoir déboguer le code multithread de quelqu'un d'autre, vous arrivez, à moitié volontairement, à moitié involontairement, à la conclusion qu'il ne faut vraiment pas laisser tout le monde avoir ces outils entre les mains.
Et lorsque vient le moment de déboguer votre propre code multithread, vous arrivez à la même conclusion.

--- p.590

Nous connaissons bien la manière dont l'accès &mut est transmis du parent à l'enfant, et du conteneur à l'élément.
Par exemple, je pense que vous pouvez appeler la méthode &mut self sur starships[id].engine uniquement si vous avez une référence &mut aux vaisseaux que vous souhaitez lancer (bien sûr, cela s'applique également si vous possédez les vaisseaux).
Félicitations, Elon Musk !
Rust adopte par défaut ce comportement familier, car il n'existe aucun moyen de forcer un enfant à avoir un accès exclusif à son parent à moins qu'il n'ait également un accès exclusif au parent.
--- p.626

Avis de l'éditeur
À lire absolument après le « Guide officiel de la programmation Rust » !
Le livre Rust numéro 1 sur Amazon !

La programmation système constitue le fondement du monde informatique.
L'écriture de code sensible aux performances nécessite un langage de programmation qui permette aux programmeurs de contrôler l'utilisation de la mémoire, du temps processeur et des autres ressources système.
Le langage de programmation système Rust combine ce contrôle avec un système de types moderne qui détecte un large éventail d'erreurs, allant des erreurs de gestion de la mémoire aux conflits d'accès aux données entre les threads.

Ce livre montre comment les fonctionnalités de Rust, qui allient sécurité de la mémoire et concurrence fiable à des performances prévisibles, offrent aux programmeurs un meilleur contrôle sur la consommation de mémoire et l'utilisation du processeur.
Les programmeurs système expérimentés trouveront ce guide pratique utile pour apprendre à concilier avec succès performance et sécurité en Rust.

• Les types de données de base de Rust et les concepts fondamentaux de propriété et d'emprunt
• Comment écrire du code flexible et efficace en utilisant les traits et les génériques
Comment écrire du code multithread rapide sans contention de données
Les outils principaux de Rust : les fermetures, les itérateurs et la programmation asynchrone
Collections, chaînes de caractères et texte, entrées et sorties, macros, code non sécurisé, interfaces de fonctions externes
SPÉCIFICATIONS DES PRODUITS
- Date d'émission : 16 janvier 2023
Nombre de pages, poids, dimensions : 852 pages | 1 586 g | 188 × 257 × 41 mm
- ISBN13 : 9791192469751
- ISBN10 : 1192469755

Vous aimerez peut-être aussi

카테고리