From 0662d1420dae81a708abbd38f77861cc1c8b0a3e Mon Sep 17 00:00:00 2001 From: Thomas Ramirez Date: Mon, 30 Aug 2021 19:28:17 +0200 Subject: [PATCH 01/64] Update FRENCH/src/ch14-01-release-profiles.md Co-authored-by: Yohan Boogaert --- FRENCH/src/ch14-01-release-profiles.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/FRENCH/src/ch14-01-release-profiles.md b/FRENCH/src/ch14-01-release-profiles.md index 943a0e7710..41f177d9f1 100644 --- a/FRENCH/src/ch14-01-release-profiles.md +++ b/FRENCH/src/ch14-01-release-profiles.md @@ -11,7 +11,7 @@ various options for compiling code. Each profile is configured independently of the others. --> -Dans Rust, les *profils de publication* sont profils prédéfinis et +Dans Rust, les *profils de publication* sont des profils prédéfinis et personnalisables avec différentes configurations qui permettent au développeur d'avoir plus de contrôle sur différentes options de compilation du code. Chaque profil est configuré indépendamment des autres. From dc63d17f6db92bb9b91d7f6518ce8b8aff8fbd7d Mon Sep 17 00:00:00 2001 From: Thomas Ramirez Date: Mon, 30 Aug 2021 19:33:32 +0200 Subject: [PATCH 02/64] Update FRENCH/src/ch14-02-publishing-to-crates-io.md Co-authored-by: Yohan Boogaert --- FRENCH/src/ch14-02-publishing-to-crates-io.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/FRENCH/src/ch14-02-publishing-to-crates-io.md b/FRENCH/src/ch14-02-publishing-to-crates-io.md index 1ec89b89fa..42f51bdea9 100644 --- a/FRENCH/src/ch14-02-publishing-to-crates-io.md +++ b/FRENCH/src/ch14-02-publishing-to-crates-io.md @@ -469,7 +469,7 @@ modules : un module `types` qui contient deux énumérations `CouleurPrimaire` --> Encart 14-3 : une bibliothèque `art` avec des éléments -organisés selon les modules `types` and `utilitaires` +organisés selon les modules `types` et `utilitaires` -Ensuite, créons un autre paquet, membre de l'espace de travail et appelons-la +Ensuite, créons un autre paquet, membre de l'espace de travail et appelons-le `ajouter-un`. Changeons le *Cargo.toml* du niveau le plus haut pour renseigner le chemin vers *ajouter-un* dans la liste `members` : @@ -477,7 +470,7 @@ plus haut de l'espace de travail plutôt que d'avoir un *Cargo.lock* dans chaque dossier de chaque crate. Cela garantit que toutes les crates utilisent la même version de toutes les dépendances. Si nous ajoutons le paquet `rand` aux fichiers *additioneur/Cargo.toml* et *ajouter-un/Cargo.toml*, cargo va réunir -ces deux en une seule version de `rand` et enregistrer cela dans un seul +les deux en une seule version de `rand` et enregistrer cela dans un seul *Cargo.lock*. Faire en sorte que toutes les crates de l'espace de travail utilisent la même dépendance signifie que les crates dans l'espace de travail seront toujours compatibles l'une avec l'autre. Ajoutons la crate `rand` à la @@ -610,7 +603,7 @@ in the workspace will be compatible with each other. --> Pour corriger cela, modifiez le fichier *Cargo.toml* pour le paquet -`additioneur` et rajouter-lui aussi un dépendance à `rand`. La compilation du +`additioneur` et indiquez que `rand` est une dépendance de cette crate aussi. La compilation du paquet `additioneur` va rajouter `rand` à la liste des dépendances pour `additioneur` dans *Cargo.lock*, mais aucune copie supplémentaire de `rand` sera téléchargé. Cargo s'est assuré que toutes les crates de chaque paquet de @@ -637,7 +630,7 @@ Afin de procéder à une autre amélioration, ajoutons un test de la fonction Filename: add-one/src/lib.rs --> -Fihcier : add-one/src/lib.rs +Fichier : add-one/src/lib.rs -La documentation de l'API qui `cargo doc` a généré pour cette crate va +La documentation de l'API que `cargo doc` a généré pour cette crate va maintenant lister et lier les ré-exportations sur la page d'accueil, comme dans l'illustration 14-4, ce qui rend les types `CouleurPrimaire` et `CouleurSecondaire` plus faciles à trouver. @@ -763,8 +763,8 @@ to the `[package]` section of the crate’s *Cargo.toml* file. Maintenant que vous avez un compte, imaginons que vous avez une crate que vous souhaitez publier. Avant de la publier, vous aurez besoin d'ajouter quelques -métadonnées à votre crate en les ajoutant à la section `[package]` de votre -fichier *Cargo.toml* de la crate. +métadonnées à votre crate en les ajoutant à la section `[package]` du fichier +*Cargo.toml* de votre crate. -Un *pointeur* est concept général pour une variable qui contient une adresse +Un *pointeur* est un concept général pour une variable qui contient une adresse vers la mémoire. Cette adresse pointe vers d'autres données. Le type de pointeur le plus courant en Rust est la référence, que vous avez appris au chapitre 4. Les références sont marquées par le symbole `&` et empruntent la valeur sur laquelle ils pointent. Elles n'ont pas d'autres fonctionnalités que celle de -pointer sur une donnée. De plus, elles n'ont pas coût sur les performances et +pointer sur une donnée. De plus, elles n'ont aucun coût sur les performances et c'est le type de pointeur que nous utilisons le plus souvent. -Au moment de la compilation, Rust a besoin de savoir combien s'espace prend un +Au moment de la compilation, Rust a besoin de savoir combien d'espace prend un type. Un des types dont la taille ne peut pas être connu au moment de la compilation est le *type récursif*, dans lequel une valeur peut avoir une partie -de sa définition qui a une valeur du même type qu'elle-même. Comme emboîtement +de sa définition qui a une valeur du même type qu'elle-même. Comme cet emboîtement de valeurs pourrait théoriquement se poursuivre à l'infini, Rust ne sait pas combien d'espace une valeur d'un type récursif peut avoir besoin. Cependant, les boites ont une taille connue, donc en utilisant une boite dans la définition @@ -513,7 +513,7 @@ directly, we’ll change the data structure to store the value indirectly by storing a pointer to the value instead. --> -Dans cette suggestion, “indirection” (NdT : redirection) signifie que plutôt de +Dans cette suggestion, “indirection” (NdT : redirection) signifie qu'au lieu de stocker une valeur directement, nous devrions changer la structure des données pour stocker à la place un pointeur vers la valeur. From 742af7b580a56904c968e06f4a7969538917a759 Mon Sep 17 00:00:00 2001 From: Thomas Ramirez Date: Thu, 2 Sep 2021 20:57:57 +0200 Subject: [PATCH 07/64] Update FRENCH/src/ch15-01-box.md Co-authored-by: Yohan Boogaert --- FRENCH/src/ch15-01-box.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/FRENCH/src/ch15-01-box.md b/FRENCH/src/ch15-01-box.md index 01a01dfb64..45d5ffd89b 100644 --- a/FRENCH/src/ch15-01-box.md +++ b/FRENCH/src/ch15-01-box.md @@ -147,7 +147,7 @@ wouldn’t be allowed to if we didn’t have boxes. --> Déposer une seule valeur sur le tas n'est pas très utile, donc vous n'utiliserez -très rarement les boites de cette manière. Laisser les valeurs comme des `i32` +que très rarement les boites de cette manière. Laisser les valeurs comme des `i32` indépendantes sur la pile, où elles sont stockées par défaut, reste plus approprié dans la majeure partie des situations. Regardons un cas où les boites nous permettent de définir des types que nous ne pourrions pas définir si nous From 9d4fb6de86754e2f20adf499d94bcb26d4f999ca Mon Sep 17 00:00:00 2001 From: Thomas Ramirez Date: Thu, 2 Sep 2021 21:04:04 +0200 Subject: [PATCH 08/64] Apply suggestions from code review Co-authored-by: Yohan Boogaert --- FRENCH/src/ch15-02-deref.md | 24 +++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/FRENCH/src/ch15-02-deref.md b/FRENCH/src/ch15-02-deref.md index adfe86c567..eb89e7eae2 100644 --- a/FRENCH/src/ch15-02-deref.md +++ b/FRENCH/src/ch15-02-deref.md @@ -35,8 +35,8 @@ qui se comporte comme `Box`, et voir pourquoi l'opérateur de déréférencem ne fonctionne pas comme une référence sur notre type fraîchement défini. Nous allons découvrir comment implémenter le trait `Deref` de manière à ce qu'il soit possible que les pointeurs intelligents fonctionnent comme les références. -Ensuite nous verons la fonctionnalité d'*extrapolation de déréférencement* de -Rust et voir comment elle nous permet de travailler à la fois avec des +Ensuite nous verrons la fonctionnalité d'*extrapolation de déréférencement* de +Rust et comment elle nous permet de travailler à la fois avec des références et des pointeurs intelligents. -Le troisième cas est plus ardue : Rust va aussi procéder à une extrapolation de -déréférencement d'une référence immuable vers une référence mutable. A cause des -règles d'emprunt, si vous avez une référence mutable, cette référence mutable -doit être la seule référence vers cette donnée (autrement, le programme ne peut -pas être compilé). Convertir une référence mutable vers une référence immuable -ne va jamais casser les règles d'emprunt. Convertir une référence immuable vers -une référence mutable nécessite que la référence immuable initiale soit la seule -référence immuable vers cette donnée, mais les règles d'emprunt n'empêchent pas -cela. Ainsi, Rust ne peut pas déduire que la conversion d'une référence immuable +Le troisième cas est plus ardu : Rust va aussi procéder à une extrapolation de +déréférencement d'une référence mutable vers une référence immuable. Mais +l'inverse n'est *pas* possible: une extrapolation de déréférencement d'une +valeur immuable ne donnera jamais une référence mutable. A cause des règles +d'emprunt, si vous avez une référence mutable, cette référence mutable doit être +la seule référence vers cette donnée (autrement, le programme ne peut pas être +compilé). Convertir une référence mutable vers une référence immuable ne va +jamais casser les règles d'emprunt. Convertir une référence immuable vers une +référence mutable nécessite que la référence immuable initiale soit la seule +référence immuable vers cette donnée, mais les règles d'emprunt n'empêchent pas +cela. Ainsi, Rust ne peut pas déduire que la conversion d'une référence immuable vers une référence mutable soit possible. From 95435257a7f94d67c4e348017a0ff7a813c2745d Mon Sep 17 00:00:00 2001 From: Thomas Ramirez Date: Fri, 3 Sep 2021 21:49:53 +0200 Subject: [PATCH 09/64] Update FRENCH/src/ch15-04-rc.md Co-authored-by: Yohan Boogaert --- FRENCH/src/ch15-04-rc.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/FRENCH/src/ch15-04-rc.md b/FRENCH/src/ch15-04-rc.md index 9c342e0037..a894eda5f0 100644 --- a/FRENCH/src/ch15-04-rc.md +++ b/FRENCH/src/ch15-04-rc.md @@ -182,7 +182,7 @@ is moved into `b` and `b` owns `a`. Then, when we try to use `a` again when creating `c`, we’re not allowed to because `a` has been moved. --> -Les variantes `Cons` prennent possession des données qu'elles obteniennent, donc +Les variantes `Cons` prennent possession des données qu'elles obtiennent, donc lorsque nous avons créé la liste `b`, `a` a été déplacée dans `b` et `b` possède désormais `a`. Ensuite, lorsque nous essayons d'utiliser `a` à nouveau lorsque nous créons `c`, nous ne sommes pas autorisés à le faire car `a` a été déplacé. From 56ca1a84430bb890d16b3f0d1f286379c82787ee Mon Sep 17 00:00:00 2001 From: Thomas Ramirez Date: Wed, 8 Sep 2021 13:04:34 +0200 Subject: [PATCH 10/64] Apply suggestions from code review Co-authored-by: Yohan Boogaert --- FRENCH/src/ch16-01-threads.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/FRENCH/src/ch16-01-threads.md b/FRENCH/src/ch16-01-threads.md index bfe7ea7181..3050a0f98c 100644 --- a/FRENCH/src/ch16-01-threads.md +++ b/FRENCH/src/ch16-01-threads.md @@ -12,7 +12,7 @@ features that run these independent parts are called *threads*. --> Dans la plupart des systèmes d'exploitation actuels, le code d'un programme -exécuté dans un *processus*, et le système d'exploitation gère plusieurs +est exécuté dans un *processus*, et le système d'exploitation gère plusieurs processus à la fois. Dans votre programme, vous pouvez vous aussi avoir des parties indépendantes qui s'exécutent simultanément. Les éléments qui font fonctionner ces parties indépendantes sont appelés les *tâches*. @@ -44,8 +44,8 @@ comme : * Les situations de concurrence, durant lesquelles les tâches accèdent à une donnée ou ressource dans un ordre incohérent * Des interblocages, durant lesquels deux tâches attendent mutuellement que - l'autre finit d'utiliser une ressource que l'autre tâche utilise, bloquant - les deux tâches de progresser + l'autre finisse d'utiliser une ressource que l'autre tâche utilise, bloquant + la progression des deux tâches * Des bogues qui surgissent uniquement dans certaines situations et qui sont difficiles à reproduire et corriger durablement @@ -207,7 +207,7 @@ program might be a little different every time, but it will look similar to the following: --> -Remarquez d'avec cette fonction, la nouvelle tâche s'arrêtera lorsque la tâche +Remarquez qu'avec cette fonction, la nouvelle tâche s'arrêtera lorsque la tâche principale s'arrêtera, qu'elle ai fini ou non de s'exécuter. La sortie de ce programme peut être différente à chaque fois, mais il devrait ressembler à ceci : @@ -260,7 +260,7 @@ tâches se relaieront probablement, mais ce n'est pas garanti : cela dépend de comment votre système d'exploitation agence les tâches. Lors de cette exécution, la tâche principale a d'abord écris, même si l'instruction d'écriture de la nouvelle tâche apparaît en premier dans le code. Et même si -nous avons demandé à la nouvelle tâche d'écrire jusqu'à ce que `i` vaut `9`, +nous avons demandé à la nouvelle tâche d'écrire jusqu'à ce que `i` vaille `9`, elle l'a fait seulement jusqu'à `5`, avant que la tâche principale s'arrête. -Remarquez dans l'encart 16-1 que la fermeture que nous donnons à `thread::span` +Remarquez dans l'encart 16-1 que la fermeture que nous donnons à `thread::spawn` ne prends pas d'arguments : nous n'utilisons aucune donnée de la tâche principale dans le code de la nouvelle tâche. Pour utiliser des données de la tâche principale dans la nouvelle tâche, la fermeture de la nouvelle tâche doit @@ -589,7 +589,7 @@ Listing 16-4 provides a scenario that’s more likely to have a reference to `v` that won’t be valid: --> -L'encart 16-4 propose un scénario qui est plus encleint à avoir une référence à +L'encart 16-4 propose un scénario qui est plus enclin à avoir une référence à `v` qui ne sera plus valide : La fonction `mpsc::channel` retourne un tuple, le premier élément est celui qui -permet d'envoyer et le second est celui qui reçoit. Les abbréviations `tx` et +permet d'envoyer et le second est celui qui reçoit. Les abréviations `tx` et `rx` sont utilisés traditionnellement dans de nombreux domaines pour signifier respectivement *transmetteur* et *récepteur*, nous avons donc nommé nos variables comme ceci pour marquer chaque élément. Nous utilisons une @@ -198,7 +198,7 @@ messages through the channel. Nous utilisons à nouveau `thread::spawn` pour créer une nouvelle tâche et ensuite utiliser `move` pour déplacer `tx` dans la fermeture afin que la -nouvelle tâche possède désormais ``tx`. La nouvelle tâche a besoin de posséder +nouvelle tâche possède désormais `tx`. La nouvelle tâche a besoin de posséder la partie émettrice du canal pour être en capacité d'envoyer des messages dans ce canal. From acb6cdf9e59351c24fd9b004fb003f191392ade5 Mon Sep 17 00:00:00 2001 From: Thomas Ramirez Date: Thu, 9 Sep 2021 12:59:07 +0200 Subject: [PATCH 13/64] Apply suggestions from code review Co-authored-by: Yohan Boogaert --- FRENCH/src/ch16-03-shared-state.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/FRENCH/src/ch16-03-shared-state.md b/FRENCH/src/ch16-03-shared-state.md index 4520a798e9..73c7bcb088 100644 --- a/FRENCH/src/ch16-03-shared-state.md +++ b/FRENCH/src/ch16-03-shared-state.md @@ -11,7 +11,7 @@ one. Consider this part of the slogan from the Go language documentation again: --> L'envoi de messages est un assez bon moyen de gestion de la concurrence, mais il -n'y a pas qu'un seul. Repensons à cette partie du slogan de la documentation du +n'y en a pas qu'un seul. Repensons à cette partie du slogan de la documentation du langage Go : “ne communiquez pas en partageant la mémoire”. -La gestion des mutex peut devenir incroyable compliquée, c'est pourquoi tant de +La gestion des mutex peut devenir incroyablement compliquée, c'est pourquoi tant de personnes sont partisanes des canaux. Cependant, grâce au système de type de Rust et aux règles de possession, vous ne pouvez pas vous tromper dans le verrouillage et déverrouillage. @@ -215,7 +215,7 @@ Le pointeur intelligent `MutexGuard` implémente `Deref` pour pouvoir pointer sur la donnée interne ; ce pointeur intelligent implémente aussi `Drop` qui libère le verrou automatiquement lorsqu'un `MutexGuard` sort de la portée, ce qui arrive à la fin de la portée interne dans l'encart 16-12. Au final, nous ne -risquons d'oublier de rendre le verrou et ainsi bloquer l'utilisation du mutex +risquons pas d'oublier de rendre le verrou et ainsi bloquer l'utilisation du mutex par les autres tâches car la libération du verrou se produit automatiquement. -Un autre détail à souligner est Rust ne peut pas vous protéger de tous les +Un autre détail à souligner est que Rust ne peut pas vous protéger de tous les genres d'erreurs de logique lorsque vous utilisez `Mutex`. Souvenez-vous que le chapitre 15 utilisait `Rc` avec le risque de créer des boucles de références, dans lesquelles deux valeurs `Rc` se référeraient l'une à From 4ed5c1342ab921d208391bc56086dab3b96962fc Mon Sep 17 00:00:00 2001 From: Thomas Ramirez Date: Thu, 9 Sep 2021 13:00:29 +0200 Subject: [PATCH 14/64] Apply suggestions from code review Co-authored-by: Yohan Boogaert --- FRENCH/src/ch16-04-extensible-concurrency-sync-and-send.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/FRENCH/src/ch16-04-extensible-concurrency-sync-and-send.md b/FRENCH/src/ch16-04-extensible-concurrency-sync-and-send.md index 70b6bb790a..7d54cca2f1 100644 --- a/FRENCH/src/ch16-04-extensible-concurrency-sync-and-send.md +++ b/FRENCH/src/ch16-04-extensible-concurrency-sync-and-send.md @@ -77,7 +77,7 @@ we’ll discuss in Chapter 19. Tous les types composés entièrement d'autres types qui implémentent `Send` sont automatiquement marqués comme `Send` eux-aussi. Presque la plupart des types -primitifs sont `Send`, à part les pointeurs bruts, ce que nous avons verrons au +primitifs sont `Send`, à part les pointeurs bruts, ce que nous verrons au chapitre 19. -Tout le code Rust dont nous avons abordé jusqu'à présent a bénéficié des +Tout le code Rust que nous avons abordé jusqu'à présent a bénéficié des garanties de sécurité de la mémoire, vérifiées à la compilation. Cependant, Rust -a un second langage caché en son sein qui n'appliquent pas ces vérifications +a un second langage caché en son sein qui n'applique pas ces vérifications pour la sécurité de la mémoire : il s'appelle le *Rust non sécurisé* et fonctionne comme le Rust habituel, mais fournit quelques super-pouvoirs supplémentaires. @@ -29,7 +29,7 @@ risk: if you use unsafe code incorrectly, problems due to memory unsafety, such as null pointer dereferencing, can occur. --> -Le Rust non sécurisé existe car, par nature, l'analyse statique est conservatif. +Le Rust non sécurisé existe car, par nature, l'analyse statique est conservative. Lorsque le compilateur essaye de déterminer si le code respecte ou non les garanties, il vaut mieux rejeter quelques programmes valides plutôt que d'accepter quelques programmes invalides. Bien que le code puisse être correct, @@ -382,9 +382,9 @@ abstraction that uses unsafe code. --> Avec tous ces dangers, pourquoi vous risquer à utiliser les pointeurs bruts ? -Une des utilisations majeures et lorsque nous nous interfacons avec du code +Une des utilisations majeures est lorsque nous nous interfacons avec du code C, comme vous allez le découvrir dans la section suivante. Une autre -utilisation est lorsque nous créons une abstraction sécurisée qui le +utilisation est lorsque nous créons une abstraction sécurisée que le vérificateur d'emprunt ne comprends pas. Nous allons découvrir les fonctions non sécurisées et ensuite voir un exemple d'une abstraction sécurisée qui utilise du code non sécurisé. @@ -408,7 +408,7 @@ responsibility for upholding the function’s contracts. Le second type d'opération qui nécessite un bloc `unsafe` est l'appel à des fonctions non sécurisées. Les fonctions et méthodes non sécurisées ressemblent -exactement pareil que les méthodes et fonctions habituelles, mais ont un +exactement aux méthodes et fonctions habituelles, mais ont un `unsafe` en plus devant le reste de leur définition. Le mot-clé `unsafe` dans ce cas signifie que la fonction a des exigences à respecter pour pouvoir y faire appel, car Rust ne peut pas garantir que nous avons rempli ces exigences. @@ -742,10 +742,10 @@ that the slice this code creates contains valid `i32` values. Attempting to use `slice` as though it’s a valid slice results in undefined behavior. --> -Nous ne possédons par la mémoire à cet emplacement arbitraire, et il n'y a +Nous ne possédons pas la mémoire à cet emplacement arbitraire, et il n'y a aucune garantie que la slice créée par ce code contient des valeurs `i32` -valides. La tentative d'utilisation `slice` sera soumis à un comportement -imprévisible même si elle est une slice valide. +valides. La tentative d'utilisation de `slice` sera soumise à un comportement +imprévisible même si c'est une slice valide. Encart 19-15 : implémentation du trait `Add` sur -`Milimetres` pour pouvoir addition `Milimetres` à `Metres` +`Milimetres` pour pouvoir additionner `Milimetres` à `Metres` -Il n'y a rien en Rust qui évite qu'un trait d'avoir une méthode avec le même -nom qu'une autre méthode d'un autre trait, ni de vous empêcher d'implémenter -d'implémenter ces deux traits sur un même type. Il est aussi possible +Il n'y a rien en Rust qui empêche un trait d'avoir une méthode avec le même +nom qu'une autre méthode d'un autre trait, ni ne vous empêche d'implémenter +ces deux traits sur un même type. Il est aussi possible d'implémenter directement une méthode avec le même nom que celle présente dans les traits sur ce type. @@ -831,9 +831,9 @@ implementation you want to call. --> Pour les fonctions associées, il n'y a pas de `destinataire` : il n'y a qu'une -liste d'arguments. Vous pouvez utiliser la syntaxe totalement définie n'importe -où vous faites appel à des fonctions ou des méthodes. Cependant, vous pouvez -éviter de renseigner n'importe quelle partie de cette syntaxe que Rust peut en +liste d'arguments. Vous pouvez utiliser la syntaxe totalement définie à n'importe +quel endroit où vous faites appel à des fonctions ou des méthodes. Cependant, vous pouvez +éviter de renseigner n'importe quelle partie de cette syntaxe que Rust peut déduire à partir d'autres informations présentes dans le code. Vous avez seulement besoin d'utiliser cette syntaxe plus verbeuse dans les cas où il y a plusieurs implémentations qui utilisent le même nom et que Rust doit être aidé @@ -1046,7 +1046,7 @@ pattern, and the wrapper type is elided at compile time. Dans [une section][implementing-a-trait-on-a-type] du chapitre 10, nous avions mentionné la règle de l'orphelin qui énonçait que nous pouvions -implémenter un trait sur un type à condition tant que le trait ou le type soit +implémenter un trait sur un type à condition que le trait ou le type soit local à notre crate. Il est possible de contourner cette restriction en utilisant le *motif newtype*, ce qui implique de créer un nouveau type dans une structure tuple (nous avons vu les structures tuple dans la section @@ -1123,7 +1123,7 @@ behavior—we would have to implement just the methods we do want manually. --> Le désavantage d'utiliser cette technique est que `Enveloppe` est un nouveau -type, dont il n'implémente pas toutes les méthodes de la valeur qu'il possède. +type, donc il n'implémente pas toutes les méthodes de la valeur qu'il possède. Il faudrait implémenter toutes les méthodes de `Vec` directement sur `Enveloppe` afin que les méthodes délèguent à `self.0`, ce qui nous permettrait d'utiliser `Enveloppe` exactement comme un `Vec`. Si nous voulions que le From 5ea7dbe3979c41b4f902a4de30aff5738dc99e44 Mon Sep 17 00:00:00 2001 From: Thomas Ramirez Date: Fri, 1 Oct 2021 16:57:32 +0200 Subject: [PATCH 18/64] Apply suggestions from code review Co-authored-by: Yohan Boogaert --- FRENCH/src/ch19-04-advanced-types.md | 28 ++++------------------------ 1 file changed, 4 insertions(+), 24 deletions(-) diff --git a/FRENCH/src/ch19-04-advanced-types.md b/FRENCH/src/ch19-04-advanced-types.md index e48fe4d70d..d6d528af84 100644 --- a/FRENCH/src/ch19-04-advanced-types.md +++ b/FRENCH/src/ch19-04-advanced-types.md @@ -85,7 +85,7 @@ nous pouvons fournir un type `Personnes` pour embarquer un `HashMap` qui stocke un identifiant d'une personne associé à son nom. Le code qui utilisera `Personnes` ne pourra utiliser que l'API publique que nous fournissons, comme une méthode pour ajouter une chaîne de caractères -de caractère qui est un nom à la collection `Personnes` ; ce code n'aura pas +en tant que nom à la collection `Personnes` ; ce code n'aura pas besoin de savoir que nous assignons en interne un identifiant `i32` aux noms. Le motif newtype est une façon allégée de procéder à de l'encapsulation pour masquer des détails d'implémentation, comme nous l'avons vu dans [une partie du @@ -140,15 +140,6 @@ types `Milimetres` et `Metres` que nous avons créé dans l'encart 19-15, {{#rustdoc_include ../listings/ch19-advanced-features/no-listing-04-kilometers-alias/src/main.rs:there}} ``` -```rust -type Kilometres = i32; - -let x: i32 = 5; -let y: Kilometres = 5; - -println!("x + y = {}", x + y); -``` - -Cela a été un long voyage, mais nous avons atteint la fin de ce livre. Dans ce +Ce fut un long voyage, mais nous avons atteint la fin de ce livre. Dans ce chapitre, nous allons construire un nouveau projet ensemble pour mettre en application certains concepts que nous avons vu dans les derniers chapitres, et aussi pour récapituler quelques leçons précédentes. @@ -84,7 +84,7 @@ Toutefois, notre intention dans ce chapitre est de vous aider à apprendre, et non pas de se laisser aller à la facilité. Comme Rust est un langage de programmation de systèmes, nous pouvons choisir le niveau d'abstraction sur lequel nous souhaitons travailler et nous pouvons descendre à un niveau plus bas -que ce qui est possible ou praticable dans d'autres langages. Nous allons écrire +que ce qui est possible ou pratique dans d'autres langages. Nous allons écrire manuellement le serveur HTTP basique et le groupe de tâches pour que vous puissiez apprendre les idées et techniques générales derrière les crates que vous serez peut-être amenés à utiliser à l'avenir. From 05520d79902260e0267de4614cb86e4e49e14b1f Mon Sep 17 00:00:00 2001 From: Thomas Ramirez Date: Mon, 11 Oct 2021 19:44:10 +0200 Subject: [PATCH 20/64] Update FRENCH/src/ch20-01-single-threaded.md Co-authored-by: Yohan Boogaert --- FRENCH/src/ch20-01-single-threaded.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/FRENCH/src/ch20-01-single-threaded.md b/FRENCH/src/ch20-01-single-threaded.md index 315a118c11..7dd42e98ed 100644 --- a/FRENCH/src/ch20-01-single-threaded.md +++ b/FRENCH/src/ch20-01-single-threaded.md @@ -462,7 +462,7 @@ fetch */* repeatedly because it’s not getting a response from our program. En fonction de votre navigateur, vous pourriez voir une sortie légèrement différente. Maintenant que nous affichons les données des requêtes, nous -pouvons constater pourquoi nous obtenons pourquoi nous obtenons plusieurs +pouvons constater pourquoi nous obtenons plusieurs connexions pour un seul chargement de page dans le navigateur web en analysant le chemin après le `Requête : GET`. Si les connexions répétées sont toutes vers */*, nous pouvons constater que le navigateur essaye d'obtenir */* à répétition From 9e85499b6a3b46700e76fa23a42a86454cc2ec28 Mon Sep 17 00:00:00 2001 From: Thomas Ramirez Date: Tue, 12 Oct 2021 21:21:52 +0200 Subject: [PATCH 21/64] Update FRENCH/src/ch20-01-single-threaded.md Co-authored-by: Yohan Boogaert --- FRENCH/src/ch20-01-single-threaded.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/FRENCH/src/ch20-01-single-threaded.md b/FRENCH/src/ch20-01-single-threaded.md index 7dd42e98ed..fc3ebf10d4 100644 --- a/FRENCH/src/ch20-01-single-threaded.md +++ b/FRENCH/src/ch20-01-single-threaded.md @@ -811,7 +811,7 @@ I/O project in Listing 12-4. Nous avons ajouté une ligne en haut pour importer le module de système de fichiers de la bibliothèque standard. Le code pour lire le contenu d'un fichier -dans une `String` devrait vous être familier ; nous n'avons utilisé dans le +dans une `String` devrait vous être familier ; nous l'avons utilisé dans le chapitre 12 lorsque nous lisions le contenu d'un fichier pour notre projet d'entrée/sortie, dans l'encart 12-4. From dd5d50e932ea8367853695798c5652074d58ae8a Mon Sep 17 00:00:00 2001 From: Thomas Ramirez Date: Sun, 24 Oct 2021 17:29:35 +0200 Subject: [PATCH 22/64] Apply suggestions from code review Co-authored-by: Yohan Boogaert --- FRENCH/src/ch20-01-single-threaded.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/FRENCH/src/ch20-01-single-threaded.md b/FRENCH/src/ch20-01-single-threaded.md index fc3ebf10d4..e5b303d1cd 100644 --- a/FRENCH/src/ch20-01-single-threaded.md +++ b/FRENCH/src/ch20-01-single-threaded.md @@ -745,7 +745,7 @@ l'encart 20-4 vous montre une possibilité. Filename: hello.html --> -Fichier : salutation.html +Fichier : hello.html -Encart 20-5 : envoi du contenu de *salutation.html* dans +Encart 20-5 : envoi du contenu de *hello.html* dans le corps de la réponse Exécutez ce code maintenant et demandez *127.0.0.1:7878* ; vous devriez obtenir -le HTML de *salutation.html*. Si vous faites n'importe quelle autre requête, +le HTML de *hello.html*. Si vous faites n'importe quelle autre requête, comme *127.0.0.1:7878/autre-chose*, vous allez obtenir une erreur de connexion comme celle que vous avez vu lorsque vous exécutiez le code l'encart 20-1 et de l'encart 20-2. @@ -988,7 +988,7 @@ any HTML you want or use the example HTML in Listing 20-8. Ici, notre réponse a une ligne de statut avec le code de statut 404 et la phrase de raison `NOT FOUND`. Nous ne retournons toujours pas d'entêtes, et le corps de la réponse sera le HTML présent dans le fichier *404.html*. Nous aurons -besoin de créer un fichier `404.html` à côté de *salutation.html* pour la page +besoin de créer un fichier `404.html` à côté de *hello.html* pour la page d'erreur ; n'hésitez pas à nouveau à utiliser le HTML que vous souhaitez ou à défaut utiliser le HTML d'exemple présent dans l'encart 20-8. @@ -1024,7 +1024,7 @@ should return the contents of *hello.html*, and any other request, like Une fois ces modifications appliquées, exécutez à nouveau votre serveur. Les requêtes vers *127.0.0.1:7878* devraient retourner le contenu de -*salutation.html*, et toutes les autres requêtes, comme +*hello.html*, et toutes les autres requêtes, comme *127.0.0.1:7878/autre-chose*, devraient retourner le HTML d'erreur présent dans *404.html*. From 33e6317cb69d251a787d96654ce96f9927cda3dc Mon Sep 17 00:00:00 2001 From: Thomas Ramirez Date: Sun, 24 Oct 2021 17:48:01 +0200 Subject: [PATCH 23/64] Apply suggestions from code review Co-authored-by: Yohan Boogaert --- FRENCH/src/ch20-02-multithreaded.md | 15 +-------------- 1 file changed, 1 insertion(+), 14 deletions(-) diff --git a/FRENCH/src/ch20-02-multithreaded.md b/FRENCH/src/ch20-02-multithreaded.md index 1a4b55b8c1..adf8c56645 100644 --- a/FRENCH/src/ch20-02-multithreaded.md +++ b/FRENCH/src/ch20-02-multithreaded.md @@ -602,7 +602,7 @@ request’s closure one time, which matches the `Once` in `FnOnce`. Le paramètre de type `F` est celui qui nous intéresse ici ; le paramètre de type `T` est lié à la valeur de retour, et nous ne sommes pas intéressés par ceci. Nous pouvons constater que `spawn` utilise le trait `FnOnce` lié à `F`. -Cela est probablement ce dont nous avons besoin, parce que nous allons sûrement +C'est probablement ce dont nous avons besoin, parce que nous allons sûrement passer cet argument dans le `execute` de `spawn`. Nous pouvons aussi être sûr que `FnOnce` est le trait dont nous avons besoin car la tâche qui va exécuter la requête va exécuter le traitement la requête uniquement une seule fois, ce qui @@ -639,19 +639,6 @@ avec les liens suivants : {{#rustdoc_include ../listings/ch20-web-server/no-listing-03-define-execute/src/lib.rs:here}} ``` -```rust -# pub struct GroupeTaches; -impl GroupeTaches { - // -- partie masquée ici -- - - pub fn executer(&self, f: F) - where - F: FnOnce() + Send + 'static - { - - } -} -``` Bientôt, nous définirons la fonction `impl_hello_macro`, qui nous permettra de -construire de nous code Rust que nous souhaitons injecter. Mais avant de faire +construire le nouveau code Rust que nous souhaitons injecter. Mais avant de faire cela, remarquez que la sortie de notre macro derive est aussi un `TokenStream`. Le `TokenStream` retourné est ajouté au code que les utilisateurs de notre crate ont écrit, donc lorsqu'ils compilent leur crate, ils récupéreront la @@ -1009,7 +1009,7 @@ returns a value of the required `TokenStream` type. --> La macro `quote!` nous permet de définir le code Rust que nous souhaitons -retourner. Le compilateur attend quelque chose de différent en résultat que le +retourner. Le compilateur attend quelque chose de différent en résultat que ce qui correspond à l'exécution de `quote!`, donc nous devons le convertir en `TokenStream`. Nous faisons ceci en faisant appel à la méthode `into`, qui se base sur cette représentation intermédiaire et retourne une valeur attendue, From 45407405da9870036a417f695762c3205753a5cd Mon Sep 17 00:00:00 2001 From: Jimskapt Date: Sat, 13 Nov 2021 19:26:15 +0100 Subject: [PATCH 27/64] =?UTF-8?q?=E2=99=BB=EF=B8=8F=20Update=20translation?= =?UTF-8?q?=20on=20ch13-02.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../listing-13-13/Cargo.toml | 1 - .../listing-13-14/Cargo.toml | 1 - .../listing-13-15/Cargo.toml | 1 - .../listing-13-15/src/lib.rs | 2 -- .../listing-13-16/Cargo.toml | 1 - .../listing-13-16/src/lib.rs | 2 -- .../listing-13-17/Cargo.toml | 1 - .../listing-13-17/output.txt | 3 +- .../listing-13-18/Cargo.toml | 1 - .../listing-13-19/Cargo.toml | 1 - .../listing-13-19/src/lib.rs | 6 ++-- .../listing-13-20/Cargo.toml | 1 - .../listing-13-20/src/lib.rs | 2 -- .../listing-13-21/Cargo.toml | 1 - .../listing-13-21/src/lib.rs | 2 -- .../listing-13-22/Cargo.toml | 1 - .../listing-13-22/src/lib.rs | 2 -- .../listing-13-23/Cargo.toml | 1 - .../listing-13-23/src/lib.rs | 2 -- .../listing-13-13/Cargo.toml | 1 - .../listing-13-14/Cargo.toml | 1 - .../listing-13-15/Cargo.toml | 1 - .../listing-13-15/src/lib.rs | 2 -- .../listing-13-16/Cargo.toml | 1 - .../listing-13-16/src/lib.rs | 2 -- .../listing-13-17/Cargo.toml | 1 - .../listing-13-17/output.txt | 3 +- .../listing-13-18/Cargo.toml | 1 - .../listing-13-19/Cargo.toml | 1 - .../listing-13-19/src/lib.rs | 2 -- .../listing-13-20/Cargo.toml | 1 - .../listing-13-20/src/lib.rs | 2 -- .../listing-13-21/Cargo.toml | 1 - .../listing-13-21/src/lib.rs | 2 -- .../listing-13-22/Cargo.toml | 1 - .../listing-13-22/src/lib.rs | 2 -- .../listing-13-23/Cargo.toml | 1 - .../listing-13-23/src/lib.rs | 2 -- FRENCH/src/ch13-02-iterators.md | 34 +++++++++---------- 39 files changed, 23 insertions(+), 71 deletions(-) diff --git a/FRENCH/listings-sources/ch13-functional-features/listing-13-13/Cargo.toml b/FRENCH/listings-sources/ch13-functional-features/listing-13-13/Cargo.toml index 015f9512f7..a844ed1dc7 100644 --- a/FRENCH/listings-sources/ch13-functional-features/listing-13-13/Cargo.toml +++ b/FRENCH/listings-sources/ch13-functional-features/listing-13-13/Cargo.toml @@ -1,7 +1,6 @@ [package] name = "iterators" version = "0.1.0" -authors = ["Your Name "] edition = "2018" [dependencies] diff --git a/FRENCH/listings-sources/ch13-functional-features/listing-13-14/Cargo.toml b/FRENCH/listings-sources/ch13-functional-features/listing-13-14/Cargo.toml index 015f9512f7..a844ed1dc7 100644 --- a/FRENCH/listings-sources/ch13-functional-features/listing-13-14/Cargo.toml +++ b/FRENCH/listings-sources/ch13-functional-features/listing-13-14/Cargo.toml @@ -1,7 +1,6 @@ [package] name = "iterators" version = "0.1.0" -authors = ["Your Name "] edition = "2018" [dependencies] diff --git a/FRENCH/listings-sources/ch13-functional-features/listing-13-15/Cargo.toml b/FRENCH/listings-sources/ch13-functional-features/listing-13-15/Cargo.toml index 015f9512f7..a844ed1dc7 100644 --- a/FRENCH/listings-sources/ch13-functional-features/listing-13-15/Cargo.toml +++ b/FRENCH/listings-sources/ch13-functional-features/listing-13-15/Cargo.toml @@ -1,7 +1,6 @@ [package] name = "iterators" version = "0.1.0" -authors = ["Your Name "] edition = "2018" [dependencies] diff --git a/FRENCH/listings-sources/ch13-functional-features/listing-13-15/src/lib.rs b/FRENCH/listings-sources/ch13-functional-features/listing-13-15/src/lib.rs index afea80d22e..758284044d 100644 --- a/FRENCH/listings-sources/ch13-functional-features/listing-13-15/src/lib.rs +++ b/FRENCH/listings-sources/ch13-functional-features/listing-13-15/src/lib.rs @@ -14,5 +14,3 @@ mod tests { } // ANCHOR_END: here } - -fn main() {} diff --git a/FRENCH/listings-sources/ch13-functional-features/listing-13-16/Cargo.toml b/FRENCH/listings-sources/ch13-functional-features/listing-13-16/Cargo.toml index 015f9512f7..a844ed1dc7 100644 --- a/FRENCH/listings-sources/ch13-functional-features/listing-13-16/Cargo.toml +++ b/FRENCH/listings-sources/ch13-functional-features/listing-13-16/Cargo.toml @@ -1,7 +1,6 @@ [package] name = "iterators" version = "0.1.0" -authors = ["Your Name "] edition = "2018" [dependencies] diff --git a/FRENCH/listings-sources/ch13-functional-features/listing-13-16/src/lib.rs b/FRENCH/listings-sources/ch13-functional-features/listing-13-16/src/lib.rs index 198b3c834b..d1cb54d0a1 100644 --- a/FRENCH/listings-sources/ch13-functional-features/listing-13-16/src/lib.rs +++ b/FRENCH/listings-sources/ch13-functional-features/listing-13-16/src/lib.rs @@ -13,5 +13,3 @@ mod tests { } // ANCHOR_END: here } - -fn main() {} diff --git a/FRENCH/listings-sources/ch13-functional-features/listing-13-17/Cargo.toml b/FRENCH/listings-sources/ch13-functional-features/listing-13-17/Cargo.toml index 015f9512f7..a844ed1dc7 100644 --- a/FRENCH/listings-sources/ch13-functional-features/listing-13-17/Cargo.toml +++ b/FRENCH/listings-sources/ch13-functional-features/listing-13-17/Cargo.toml @@ -1,7 +1,6 @@ [package] name = "iterators" version = "0.1.0" -authors = ["Your Name "] edition = "2018" [dependencies] diff --git a/FRENCH/listings-sources/ch13-functional-features/listing-13-17/output.txt b/FRENCH/listings-sources/ch13-functional-features/listing-13-17/output.txt index a7dabfa9d0..eb83eb113b 100644 --- a/FRENCH/listings-sources/ch13-functional-features/listing-13-17/output.txt +++ b/FRENCH/listings-sources/ch13-functional-features/listing-13-17/output.txt @@ -1,6 +1,6 @@ $ cargo run Compiling iterators v0.1.0 (file:///projects/iterators) -warning: unused `std::iter::Map` that must be used +warning: unused `Map` that must be used -- > src/main.rs:4:5 | 4 | v1.iter().map(|x| x + 1); @@ -9,5 +9,6 @@ warning: unused `std::iter::Map` that must be used = note: `#[warn(unused_must_use)]` on by default = note: iterators are lazy and do nothing unless consumed +warning: `iterators` (bin "iterators") generated 1 warning Finished dev [unoptimized + debuginfo] target(s) in 0.47s Running `target/debug/iterators` diff --git a/FRENCH/listings-sources/ch13-functional-features/listing-13-18/Cargo.toml b/FRENCH/listings-sources/ch13-functional-features/listing-13-18/Cargo.toml index 015f9512f7..a844ed1dc7 100644 --- a/FRENCH/listings-sources/ch13-functional-features/listing-13-18/Cargo.toml +++ b/FRENCH/listings-sources/ch13-functional-features/listing-13-18/Cargo.toml @@ -1,7 +1,6 @@ [package] name = "iterators" version = "0.1.0" -authors = ["Your Name "] edition = "2018" [dependencies] diff --git a/FRENCH/listings-sources/ch13-functional-features/listing-13-19/Cargo.toml b/FRENCH/listings-sources/ch13-functional-features/listing-13-19/Cargo.toml index d0ecdac67b..4e64dff447 100644 --- a/FRENCH/listings-sources/ch13-functional-features/listing-13-19/Cargo.toml +++ b/FRENCH/listings-sources/ch13-functional-features/listing-13-19/Cargo.toml @@ -1,7 +1,6 @@ [package] name = "shoe_size" version = "0.1.0" -authors = ["Your Name "] edition = "2018" [dependencies] diff --git a/FRENCH/listings-sources/ch13-functional-features/listing-13-19/src/lib.rs b/FRENCH/listings-sources/ch13-functional-features/listing-13-19/src/lib.rs index c7ca364c28..281c3c9e40 100644 --- a/FRENCH/listings-sources/ch13-functional-features/listing-13-19/src/lib.rs +++ b/FRENCH/listings-sources/ch13-functional-features/listing-13-19/src/lib.rs @@ -4,7 +4,7 @@ struct Shoe { style: String, } -fn shoes_in_my_size(shoes: Vec, shoe_size: u32) -> Vec { +fn shoes_in_size(shoes: Vec, shoe_size: u32) -> Vec { shoes.into_iter().filter(|s| s.size == shoe_size).collect() } @@ -29,7 +29,7 @@ mod tests { }, ]; - let in_my_size = shoes_in_my_size(shoes, 10); + let in_my_size = shoes_in_size(shoes, 10); assert_eq!( in_my_size, @@ -46,5 +46,3 @@ mod tests { ); } } - -fn main() {} diff --git a/FRENCH/listings-sources/ch13-functional-features/listing-13-20/Cargo.toml b/FRENCH/listings-sources/ch13-functional-features/listing-13-20/Cargo.toml index 4eb29e80c1..4d881a627a 100644 --- a/FRENCH/listings-sources/ch13-functional-features/listing-13-20/Cargo.toml +++ b/FRENCH/listings-sources/ch13-functional-features/listing-13-20/Cargo.toml @@ -1,7 +1,6 @@ [package] name = "counter" version = "0.1.0" -authors = ["Your Name "] edition = "2018" [dependencies] diff --git a/FRENCH/listings-sources/ch13-functional-features/listing-13-20/src/lib.rs b/FRENCH/listings-sources/ch13-functional-features/listing-13-20/src/lib.rs index 897804c429..fb8a0cb2f8 100644 --- a/FRENCH/listings-sources/ch13-functional-features/listing-13-20/src/lib.rs +++ b/FRENCH/listings-sources/ch13-functional-features/listing-13-20/src/lib.rs @@ -7,5 +7,3 @@ impl Counter { Counter { count: 0 } } } - -fn main() {} diff --git a/FRENCH/listings-sources/ch13-functional-features/listing-13-21/Cargo.toml b/FRENCH/listings-sources/ch13-functional-features/listing-13-21/Cargo.toml index 4eb29e80c1..4d881a627a 100644 --- a/FRENCH/listings-sources/ch13-functional-features/listing-13-21/Cargo.toml +++ b/FRENCH/listings-sources/ch13-functional-features/listing-13-21/Cargo.toml @@ -1,7 +1,6 @@ [package] name = "counter" version = "0.1.0" -authors = ["Your Name "] edition = "2018" [dependencies] diff --git a/FRENCH/listings-sources/ch13-functional-features/listing-13-21/src/lib.rs b/FRENCH/listings-sources/ch13-functional-features/listing-13-21/src/lib.rs index 97806be488..35ea8e5b6a 100644 --- a/FRENCH/listings-sources/ch13-functional-features/listing-13-21/src/lib.rs +++ b/FRENCH/listings-sources/ch13-functional-features/listing-13-21/src/lib.rs @@ -22,5 +22,3 @@ impl Iterator for Counter { } } // ANCHOR_END: here - -fn main() {} diff --git a/FRENCH/listings-sources/ch13-functional-features/listing-13-22/Cargo.toml b/FRENCH/listings-sources/ch13-functional-features/listing-13-22/Cargo.toml index 4eb29e80c1..4d881a627a 100644 --- a/FRENCH/listings-sources/ch13-functional-features/listing-13-22/Cargo.toml +++ b/FRENCH/listings-sources/ch13-functional-features/listing-13-22/Cargo.toml @@ -1,7 +1,6 @@ [package] name = "counter" version = "0.1.0" -authors = ["Your Name "] edition = "2018" [dependencies] diff --git a/FRENCH/listings-sources/ch13-functional-features/listing-13-22/src/lib.rs b/FRENCH/listings-sources/ch13-functional-features/listing-13-22/src/lib.rs index f8faaca070..05afa41c88 100644 --- a/FRENCH/listings-sources/ch13-functional-features/listing-13-22/src/lib.rs +++ b/FRENCH/listings-sources/ch13-functional-features/listing-13-22/src/lib.rs @@ -39,5 +39,3 @@ mod tests { } // ANCHOR_END: here } - -fn main() {} diff --git a/FRENCH/listings-sources/ch13-functional-features/listing-13-23/Cargo.toml b/FRENCH/listings-sources/ch13-functional-features/listing-13-23/Cargo.toml index 4eb29e80c1..4d881a627a 100644 --- a/FRENCH/listings-sources/ch13-functional-features/listing-13-23/Cargo.toml +++ b/FRENCH/listings-sources/ch13-functional-features/listing-13-23/Cargo.toml @@ -1,7 +1,6 @@ [package] name = "counter" version = "0.1.0" -authors = ["Your Name "] edition = "2018" [dependencies] diff --git a/FRENCH/listings-sources/ch13-functional-features/listing-13-23/src/lib.rs b/FRENCH/listings-sources/ch13-functional-features/listing-13-23/src/lib.rs index 351321ff97..f04d7304cd 100644 --- a/FRENCH/listings-sources/ch13-functional-features/listing-13-23/src/lib.rs +++ b/FRENCH/listings-sources/ch13-functional-features/listing-13-23/src/lib.rs @@ -49,5 +49,3 @@ mod tests { } // ANCHOR_END: here } - -fn main() {} diff --git a/FRENCH/listings/ch13-functional-features/listing-13-13/Cargo.toml b/FRENCH/listings/ch13-functional-features/listing-13-13/Cargo.toml index 015f9512f7..a844ed1dc7 100644 --- a/FRENCH/listings/ch13-functional-features/listing-13-13/Cargo.toml +++ b/FRENCH/listings/ch13-functional-features/listing-13-13/Cargo.toml @@ -1,7 +1,6 @@ [package] name = "iterators" version = "0.1.0" -authors = ["Your Name "] edition = "2018" [dependencies] diff --git a/FRENCH/listings/ch13-functional-features/listing-13-14/Cargo.toml b/FRENCH/listings/ch13-functional-features/listing-13-14/Cargo.toml index 015f9512f7..a844ed1dc7 100644 --- a/FRENCH/listings/ch13-functional-features/listing-13-14/Cargo.toml +++ b/FRENCH/listings/ch13-functional-features/listing-13-14/Cargo.toml @@ -1,7 +1,6 @@ [package] name = "iterators" version = "0.1.0" -authors = ["Your Name "] edition = "2018" [dependencies] diff --git a/FRENCH/listings/ch13-functional-features/listing-13-15/Cargo.toml b/FRENCH/listings/ch13-functional-features/listing-13-15/Cargo.toml index 015f9512f7..a844ed1dc7 100644 --- a/FRENCH/listings/ch13-functional-features/listing-13-15/Cargo.toml +++ b/FRENCH/listings/ch13-functional-features/listing-13-15/Cargo.toml @@ -1,7 +1,6 @@ [package] name = "iterators" version = "0.1.0" -authors = ["Your Name "] edition = "2018" [dependencies] diff --git a/FRENCH/listings/ch13-functional-features/listing-13-15/src/lib.rs b/FRENCH/listings/ch13-functional-features/listing-13-15/src/lib.rs index 4731560e77..64116dce78 100644 --- a/FRENCH/listings/ch13-functional-features/listing-13-15/src/lib.rs +++ b/FRENCH/listings/ch13-functional-features/listing-13-15/src/lib.rs @@ -14,5 +14,3 @@ mod tests { } // ANCHOR_END: here } - -fn main() {} diff --git a/FRENCH/listings/ch13-functional-features/listing-13-16/Cargo.toml b/FRENCH/listings/ch13-functional-features/listing-13-16/Cargo.toml index 015f9512f7..a844ed1dc7 100644 --- a/FRENCH/listings/ch13-functional-features/listing-13-16/Cargo.toml +++ b/FRENCH/listings/ch13-functional-features/listing-13-16/Cargo.toml @@ -1,7 +1,6 @@ [package] name = "iterators" version = "0.1.0" -authors = ["Your Name "] edition = "2018" [dependencies] diff --git a/FRENCH/listings/ch13-functional-features/listing-13-16/src/lib.rs b/FRENCH/listings/ch13-functional-features/listing-13-16/src/lib.rs index 198b3c834b..d1cb54d0a1 100644 --- a/FRENCH/listings/ch13-functional-features/listing-13-16/src/lib.rs +++ b/FRENCH/listings/ch13-functional-features/listing-13-16/src/lib.rs @@ -13,5 +13,3 @@ mod tests { } // ANCHOR_END: here } - -fn main() {} diff --git a/FRENCH/listings/ch13-functional-features/listing-13-17/Cargo.toml b/FRENCH/listings/ch13-functional-features/listing-13-17/Cargo.toml index 015f9512f7..a844ed1dc7 100644 --- a/FRENCH/listings/ch13-functional-features/listing-13-17/Cargo.toml +++ b/FRENCH/listings/ch13-functional-features/listing-13-17/Cargo.toml @@ -1,7 +1,6 @@ [package] name = "iterators" version = "0.1.0" -authors = ["Your Name "] edition = "2018" [dependencies] diff --git a/FRENCH/listings/ch13-functional-features/listing-13-17/output.txt b/FRENCH/listings/ch13-functional-features/listing-13-17/output.txt index ff02254be7..228c764ed2 100644 --- a/FRENCH/listings/ch13-functional-features/listing-13-17/output.txt +++ b/FRENCH/listings/ch13-functional-features/listing-13-17/output.txt @@ -1,6 +1,6 @@ $ cargo run Compiling iterators v0.1.0 (file:///projects/iterators) -warning: unused `std::iter::Map` that must be used +warning: unused `Map` that must be used --> src/main.rs:4:5 | 4 | v1.iter().map(|x| x + 1); @@ -9,5 +9,6 @@ warning: unused `std::iter::Map` that must be used = note: `#[warn(unused_must_use)]` on by default = note: iterators are lazy and do nothing unless consumed +warning: `iterators` (bin "iterators") generated 1 warning Finished dev [unoptimized + debuginfo] target(s) in 0.47s Running `target/debug/iterators` diff --git a/FRENCH/listings/ch13-functional-features/listing-13-18/Cargo.toml b/FRENCH/listings/ch13-functional-features/listing-13-18/Cargo.toml index 015f9512f7..a844ed1dc7 100644 --- a/FRENCH/listings/ch13-functional-features/listing-13-18/Cargo.toml +++ b/FRENCH/listings/ch13-functional-features/listing-13-18/Cargo.toml @@ -1,7 +1,6 @@ [package] name = "iterators" version = "0.1.0" -authors = ["Your Name "] edition = "2018" [dependencies] diff --git a/FRENCH/listings/ch13-functional-features/listing-13-19/Cargo.toml b/FRENCH/listings/ch13-functional-features/listing-13-19/Cargo.toml index d0ecdac67b..4e64dff447 100644 --- a/FRENCH/listings/ch13-functional-features/listing-13-19/Cargo.toml +++ b/FRENCH/listings/ch13-functional-features/listing-13-19/Cargo.toml @@ -1,7 +1,6 @@ [package] name = "shoe_size" version = "0.1.0" -authors = ["Your Name "] edition = "2018" [dependencies] diff --git a/FRENCH/listings/ch13-functional-features/listing-13-19/src/lib.rs b/FRENCH/listings/ch13-functional-features/listing-13-19/src/lib.rs index 9e814845c4..f1f1798217 100644 --- a/FRENCH/listings/ch13-functional-features/listing-13-19/src/lib.rs +++ b/FRENCH/listings/ch13-functional-features/listing-13-19/src/lib.rs @@ -48,5 +48,3 @@ mod tests { ); } } - -fn main() {} diff --git a/FRENCH/listings/ch13-functional-features/listing-13-20/Cargo.toml b/FRENCH/listings/ch13-functional-features/listing-13-20/Cargo.toml index 4eb29e80c1..4d881a627a 100644 --- a/FRENCH/listings/ch13-functional-features/listing-13-20/Cargo.toml +++ b/FRENCH/listings/ch13-functional-features/listing-13-20/Cargo.toml @@ -1,7 +1,6 @@ [package] name = "counter" version = "0.1.0" -authors = ["Your Name "] edition = "2018" [dependencies] diff --git a/FRENCH/listings/ch13-functional-features/listing-13-20/src/lib.rs b/FRENCH/listings/ch13-functional-features/listing-13-20/src/lib.rs index bf69bc069f..9b1eb49fd1 100644 --- a/FRENCH/listings/ch13-functional-features/listing-13-20/src/lib.rs +++ b/FRENCH/listings/ch13-functional-features/listing-13-20/src/lib.rs @@ -7,5 +7,3 @@ impl Compteur { Compteur { compteur: 0 } } } - -fn main() {} diff --git a/FRENCH/listings/ch13-functional-features/listing-13-21/Cargo.toml b/FRENCH/listings/ch13-functional-features/listing-13-21/Cargo.toml index 4eb29e80c1..4d881a627a 100644 --- a/FRENCH/listings/ch13-functional-features/listing-13-21/Cargo.toml +++ b/FRENCH/listings/ch13-functional-features/listing-13-21/Cargo.toml @@ -1,7 +1,6 @@ [package] name = "counter" version = "0.1.0" -authors = ["Your Name "] edition = "2018" [dependencies] diff --git a/FRENCH/listings/ch13-functional-features/listing-13-21/src/lib.rs b/FRENCH/listings/ch13-functional-features/listing-13-21/src/lib.rs index 72019504d8..a96286eaf2 100644 --- a/FRENCH/listings/ch13-functional-features/listing-13-21/src/lib.rs +++ b/FRENCH/listings/ch13-functional-features/listing-13-21/src/lib.rs @@ -22,5 +22,3 @@ impl Iterator for Compteur { } } // ANCHOR_END: here - -fn main() {} diff --git a/FRENCH/listings/ch13-functional-features/listing-13-22/Cargo.toml b/FRENCH/listings/ch13-functional-features/listing-13-22/Cargo.toml index 4eb29e80c1..4d881a627a 100644 --- a/FRENCH/listings/ch13-functional-features/listing-13-22/Cargo.toml +++ b/FRENCH/listings/ch13-functional-features/listing-13-22/Cargo.toml @@ -1,7 +1,6 @@ [package] name = "counter" version = "0.1.0" -authors = ["Your Name "] edition = "2018" [dependencies] diff --git a/FRENCH/listings/ch13-functional-features/listing-13-22/src/lib.rs b/FRENCH/listings/ch13-functional-features/listing-13-22/src/lib.rs index 98d372eddc..6a840c4909 100644 --- a/FRENCH/listings/ch13-functional-features/listing-13-22/src/lib.rs +++ b/FRENCH/listings/ch13-functional-features/listing-13-22/src/lib.rs @@ -39,5 +39,3 @@ mod tests { } // ANCHOR_END: here } - -fn main() {} diff --git a/FRENCH/listings/ch13-functional-features/listing-13-23/Cargo.toml b/FRENCH/listings/ch13-functional-features/listing-13-23/Cargo.toml index 4eb29e80c1..4d881a627a 100644 --- a/FRENCH/listings/ch13-functional-features/listing-13-23/Cargo.toml +++ b/FRENCH/listings/ch13-functional-features/listing-13-23/Cargo.toml @@ -1,7 +1,6 @@ [package] name = "counter" version = "0.1.0" -authors = ["Your Name "] edition = "2018" [dependencies] diff --git a/FRENCH/listings/ch13-functional-features/listing-13-23/src/lib.rs b/FRENCH/listings/ch13-functional-features/listing-13-23/src/lib.rs index 0f5e6061d5..fd965a4efd 100644 --- a/FRENCH/listings/ch13-functional-features/listing-13-23/src/lib.rs +++ b/FRENCH/listings/ch13-functional-features/listing-13-23/src/lib.rs @@ -49,5 +49,3 @@ mod tests { } // ANCHOR_END: here } - -fn main() {} diff --git a/FRENCH/src/ch13-02-iterators.md b/FRENCH/src/ch13-02-iterators.md index 53a1829b9e..0ee2f5f5b8 100644 --- a/FRENCH/src/ch13-02-iterators.md +++ b/FRENCH/src/ch13-02-iterators.md @@ -199,12 +199,12 @@ l'itérateur créé à partir du vecteur. Fichier : src/lib.rs -```rust +```rust,noplayground {{#rustdoc_include ../listings/ch13-functional-features/listing-13-15/src/lib.rs:here}} ``` @@ -296,12 +296,12 @@ illustrant une utilisation de la méthode `sum` : Fichier : src/lib.rs -```rust +```rust,noplayground {{#rustdoc_include ../listings/ch13-functional-features/listing-13-16/src/lib.rs:here}} ``` @@ -508,12 +508,12 @@ chaussures avec la pointure demandée. Fichier : src/lib.rs -```rust +```rust,noplayground {{#rustdoc_include ../listings/ch13-functional-features/listing-13-19/src/lib.rs}} ``` @@ -526,7 +526,7 @@ that captures `shoe_size` fermeture capturant `pointure_chaussure` @@ -536,7 +536,7 @@ chaussures et d'une pointure comme paramètres. Il retourne un vecteur contenant uniquement des chaussures de la pointure demandée. @@ -622,12 +622,12 @@ associée `new` pour créer des instances de `Compteur` : Fichier : src/lib.rs -```rust +```rust,noplayground {{#rustdoc_include ../listings/ch13-functional-features/listing-13-20/src/lib.rs}} ``` @@ -673,12 +673,12 @@ qu'il se passe quand cet itérateur est utilisé, comme dans l'encart 13-21 : Fichier : src/lib.rs -```rust +```rust,noplayground {{#rustdoc_include ../listings/ch13-functional-features/listing-13-21/src/lib.rs:here}} ``` @@ -741,12 +741,12 @@ partir d'un vecteur dans l'encart 13-15. Fichier : src/lib.rs -```rust +```rust,noplayground {{#rustdoc_include ../listings/ch13-functional-features/listing-13-22/src/lib.rs:here}} ``` @@ -808,12 +808,12 @@ pourrions le faire, comme le montre le test dans l'encart 13-23 : Fichier : src/lib.rs -```rust +```rust,noplayground {{#rustdoc_include ../listings/ch13-functional-features/listing-13-23/src/lib.rs:here}} ``` From 445a6c4f59779661501f9b1764b6712697ca942a Mon Sep 17 00:00:00 2001 From: Jimskapt Date: Sat, 13 Nov 2021 20:28:39 +0100 Subject: [PATCH 28/64] =?UTF-8?q?=E2=99=BB=EF=B8=8F=20Update=20translation?= =?UTF-8?q?=20on=20ch13-03.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../listing-12-23-reproduced/Cargo.toml | 1 - .../listing-12-23-reproduced/src/lib.rs | 4 +-- .../listing-12-24-reproduced/Cargo.toml | 1 - .../listing-12-24-reproduced/src/lib.rs | 2 +- .../listing-13-25/Cargo.toml | 1 - .../listing-13-25/src/lib.rs | 2 +- .../listing-13-26/Cargo.toml | 1 - .../listing-13-27/Cargo.toml | 1 - .../listing-13-27/src/lib.rs | 2 -- .../listing-13-29/Cargo.toml | 1 - .../listing-12-23-reproduced/Cargo.toml | 1 - .../listing-12-23-reproduced/src/lib.rs | 4 +-- .../listing-12-24-reproduced/Cargo.toml | 1 - .../listing-12-24-reproduced/src/lib.rs | 2 +- .../listing-13-25/Cargo.toml | 1 - .../listing-13-25/src/lib.rs | 2 +- .../listing-13-26/Cargo.toml | 1 - .../listing-13-27/Cargo.toml | 1 - .../listing-13-27/src/lib.rs | 2 -- .../listing-13-29/Cargo.toml | 1 - .../src/ch13-03-improving-our-io-project.md | 34 +++++++++++++++++-- 21 files changed, 38 insertions(+), 28 deletions(-) diff --git a/FRENCH/listings-sources/ch13-functional-features/listing-12-23-reproduced/Cargo.toml b/FRENCH/listings-sources/ch13-functional-features/listing-12-23-reproduced/Cargo.toml index 82606426f1..f4228aec21 100644 --- a/FRENCH/listings-sources/ch13-functional-features/listing-12-23-reproduced/Cargo.toml +++ b/FRENCH/listings-sources/ch13-functional-features/listing-12-23-reproduced/Cargo.toml @@ -1,7 +1,6 @@ [package] name = "minigrep" version = "0.1.0" -authors = ["Your Name "] edition = "2018" [dependencies] diff --git a/FRENCH/listings-sources/ch13-functional-features/listing-12-23-reproduced/src/lib.rs b/FRENCH/listings-sources/ch13-functional-features/listing-12-23-reproduced/src/lib.rs index 5397d7f617..7721acd21e 100644 --- a/FRENCH/listings-sources/ch13-functional-features/listing-12-23-reproduced/src/lib.rs +++ b/FRENCH/listings-sources/ch13-functional-features/listing-12-23-reproduced/src/lib.rs @@ -10,7 +10,7 @@ pub struct Config { // ANCHOR: ch13 impl Config { - pub fn new(args: &[String]) -> Result { + pub fn new(args: &[String]) -> Result { if args.len() < 3 { return Err("not enough arguments"); } @@ -104,5 +104,3 @@ Trust me."; ); } } - -fn main() {} diff --git a/FRENCH/listings-sources/ch13-functional-features/listing-12-24-reproduced/Cargo.toml b/FRENCH/listings-sources/ch13-functional-features/listing-12-24-reproduced/Cargo.toml index 82606426f1..f4228aec21 100644 --- a/FRENCH/listings-sources/ch13-functional-features/listing-12-24-reproduced/Cargo.toml +++ b/FRENCH/listings-sources/ch13-functional-features/listing-12-24-reproduced/Cargo.toml @@ -1,7 +1,6 @@ [package] name = "minigrep" version = "0.1.0" -authors = ["Your Name "] edition = "2018" [dependencies] diff --git a/FRENCH/listings-sources/ch13-functional-features/listing-12-24-reproduced/src/lib.rs b/FRENCH/listings-sources/ch13-functional-features/listing-12-24-reproduced/src/lib.rs index fe1dccf4ee..d0d0eb385f 100644 --- a/FRENCH/listings-sources/ch13-functional-features/listing-12-24-reproduced/src/lib.rs +++ b/FRENCH/listings-sources/ch13-functional-features/listing-12-24-reproduced/src/lib.rs @@ -9,7 +9,7 @@ pub struct Config { } impl Config { - pub fn new(args: &[String]) -> Result { + pub fn new(args: &[String]) -> Result { if args.len() < 3 { return Err("not enough arguments"); } diff --git a/FRENCH/listings-sources/ch13-functional-features/listing-13-25/Cargo.toml b/FRENCH/listings-sources/ch13-functional-features/listing-13-25/Cargo.toml index 82606426f1..f4228aec21 100644 --- a/FRENCH/listings-sources/ch13-functional-features/listing-13-25/Cargo.toml +++ b/FRENCH/listings-sources/ch13-functional-features/listing-13-25/Cargo.toml @@ -1,7 +1,6 @@ [package] name = "minigrep" version = "0.1.0" -authors = ["Your Name "] edition = "2018" [dependencies] diff --git a/FRENCH/listings-sources/ch13-functional-features/listing-13-25/src/lib.rs b/FRENCH/listings-sources/ch13-functional-features/listing-13-25/src/lib.rs index fe1dccf4ee..d0d0eb385f 100644 --- a/FRENCH/listings-sources/ch13-functional-features/listing-13-25/src/lib.rs +++ b/FRENCH/listings-sources/ch13-functional-features/listing-13-25/src/lib.rs @@ -9,7 +9,7 @@ pub struct Config { } impl Config { - pub fn new(args: &[String]) -> Result { + pub fn new(args: &[String]) -> Result { if args.len() < 3 { return Err("not enough arguments"); } diff --git a/FRENCH/listings-sources/ch13-functional-features/listing-13-26/Cargo.toml b/FRENCH/listings-sources/ch13-functional-features/listing-13-26/Cargo.toml index 82606426f1..f4228aec21 100644 --- a/FRENCH/listings-sources/ch13-functional-features/listing-13-26/Cargo.toml +++ b/FRENCH/listings-sources/ch13-functional-features/listing-13-26/Cargo.toml @@ -1,7 +1,6 @@ [package] name = "minigrep" version = "0.1.0" -authors = ["Your Name "] edition = "2018" [dependencies] diff --git a/FRENCH/listings-sources/ch13-functional-features/listing-13-27/Cargo.toml b/FRENCH/listings-sources/ch13-functional-features/listing-13-27/Cargo.toml index 82606426f1..f4228aec21 100644 --- a/FRENCH/listings-sources/ch13-functional-features/listing-13-27/Cargo.toml +++ b/FRENCH/listings-sources/ch13-functional-features/listing-13-27/Cargo.toml @@ -1,7 +1,6 @@ [package] name = "minigrep" version = "0.1.0" -authors = ["Your Name "] edition = "2018" [dependencies] diff --git a/FRENCH/listings-sources/ch13-functional-features/listing-13-27/src/lib.rs b/FRENCH/listings-sources/ch13-functional-features/listing-13-27/src/lib.rs index 61d828aab4..7a33565463 100644 --- a/FRENCH/listings-sources/ch13-functional-features/listing-13-27/src/lib.rs +++ b/FRENCH/listings-sources/ch13-functional-features/listing-13-27/src/lib.rs @@ -109,5 +109,3 @@ Trust me."; ); } } - -fn main() {} diff --git a/FRENCH/listings-sources/ch13-functional-features/listing-13-29/Cargo.toml b/FRENCH/listings-sources/ch13-functional-features/listing-13-29/Cargo.toml index 82606426f1..f4228aec21 100644 --- a/FRENCH/listings-sources/ch13-functional-features/listing-13-29/Cargo.toml +++ b/FRENCH/listings-sources/ch13-functional-features/listing-13-29/Cargo.toml @@ -1,7 +1,6 @@ [package] name = "minigrep" version = "0.1.0" -authors = ["Your Name "] edition = "2018" [dependencies] diff --git a/FRENCH/listings/ch13-functional-features/listing-12-23-reproduced/Cargo.toml b/FRENCH/listings/ch13-functional-features/listing-12-23-reproduced/Cargo.toml index 82606426f1..f4228aec21 100644 --- a/FRENCH/listings/ch13-functional-features/listing-12-23-reproduced/Cargo.toml +++ b/FRENCH/listings/ch13-functional-features/listing-12-23-reproduced/Cargo.toml @@ -1,7 +1,6 @@ [package] name = "minigrep" version = "0.1.0" -authors = ["Your Name "] edition = "2018" [dependencies] diff --git a/FRENCH/listings/ch13-functional-features/listing-12-23-reproduced/src/lib.rs b/FRENCH/listings/ch13-functional-features/listing-12-23-reproduced/src/lib.rs index e9cee93f36..130ce2a43e 100644 --- a/FRENCH/listings/ch13-functional-features/listing-12-23-reproduced/src/lib.rs +++ b/FRENCH/listings/ch13-functional-features/listing-12-23-reproduced/src/lib.rs @@ -10,7 +10,7 @@ pub struct Config { // ANCHOR: ch13 impl Config { - pub fn new(args: &[String]) -> Result { + pub fn new(args: &[String]) -> Result { if args.len() < 3 { return Err("il n'y a pas assez d'arguments"); } @@ -104,5 +104,3 @@ Trust me."; ); } } - -fn main() {} diff --git a/FRENCH/listings/ch13-functional-features/listing-12-24-reproduced/Cargo.toml b/FRENCH/listings/ch13-functional-features/listing-12-24-reproduced/Cargo.toml index 82606426f1..f4228aec21 100644 --- a/FRENCH/listings/ch13-functional-features/listing-12-24-reproduced/Cargo.toml +++ b/FRENCH/listings/ch13-functional-features/listing-12-24-reproduced/Cargo.toml @@ -1,7 +1,6 @@ [package] name = "minigrep" version = "0.1.0" -authors = ["Your Name "] edition = "2018" [dependencies] diff --git a/FRENCH/listings/ch13-functional-features/listing-12-24-reproduced/src/lib.rs b/FRENCH/listings/ch13-functional-features/listing-12-24-reproduced/src/lib.rs index 9e0fde4c17..5087c292cd 100644 --- a/FRENCH/listings/ch13-functional-features/listing-12-24-reproduced/src/lib.rs +++ b/FRENCH/listings/ch13-functional-features/listing-12-24-reproduced/src/lib.rs @@ -9,7 +9,7 @@ pub struct Config { } impl Config { - pub fn new(args: &[String]) -> Result { + pub fn new(args: &[String]) -> Result { if args.len() < 3 { return Err("il n'y a pas assez d'arguments"); } diff --git a/FRENCH/listings/ch13-functional-features/listing-13-25/Cargo.toml b/FRENCH/listings/ch13-functional-features/listing-13-25/Cargo.toml index 82606426f1..f4228aec21 100644 --- a/FRENCH/listings/ch13-functional-features/listing-13-25/Cargo.toml +++ b/FRENCH/listings/ch13-functional-features/listing-13-25/Cargo.toml @@ -1,7 +1,6 @@ [package] name = "minigrep" version = "0.1.0" -authors = ["Your Name "] edition = "2018" [dependencies] diff --git a/FRENCH/listings/ch13-functional-features/listing-13-25/src/lib.rs b/FRENCH/listings/ch13-functional-features/listing-13-25/src/lib.rs index 9e0fde4c17..5087c292cd 100644 --- a/FRENCH/listings/ch13-functional-features/listing-13-25/src/lib.rs +++ b/FRENCH/listings/ch13-functional-features/listing-13-25/src/lib.rs @@ -9,7 +9,7 @@ pub struct Config { } impl Config { - pub fn new(args: &[String]) -> Result { + pub fn new(args: &[String]) -> Result { if args.len() < 3 { return Err("il n'y a pas assez d'arguments"); } diff --git a/FRENCH/listings/ch13-functional-features/listing-13-26/Cargo.toml b/FRENCH/listings/ch13-functional-features/listing-13-26/Cargo.toml index 82606426f1..f4228aec21 100644 --- a/FRENCH/listings/ch13-functional-features/listing-13-26/Cargo.toml +++ b/FRENCH/listings/ch13-functional-features/listing-13-26/Cargo.toml @@ -1,7 +1,6 @@ [package] name = "minigrep" version = "0.1.0" -authors = ["Your Name "] edition = "2018" [dependencies] diff --git a/FRENCH/listings/ch13-functional-features/listing-13-27/Cargo.toml b/FRENCH/listings/ch13-functional-features/listing-13-27/Cargo.toml index 82606426f1..f4228aec21 100644 --- a/FRENCH/listings/ch13-functional-features/listing-13-27/Cargo.toml +++ b/FRENCH/listings/ch13-functional-features/listing-13-27/Cargo.toml @@ -1,7 +1,6 @@ [package] name = "minigrep" version = "0.1.0" -authors = ["Your Name "] edition = "2018" [dependencies] diff --git a/FRENCH/listings/ch13-functional-features/listing-13-27/src/lib.rs b/FRENCH/listings/ch13-functional-features/listing-13-27/src/lib.rs index 67b7bdac91..415589a6db 100644 --- a/FRENCH/listings/ch13-functional-features/listing-13-27/src/lib.rs +++ b/FRENCH/listings/ch13-functional-features/listing-13-27/src/lib.rs @@ -109,5 +109,3 @@ Trust me."; ); } } - -fn main() {} diff --git a/FRENCH/listings/ch13-functional-features/listing-13-29/Cargo.toml b/FRENCH/listings/ch13-functional-features/listing-13-29/Cargo.toml index 82606426f1..f4228aec21 100644 --- a/FRENCH/listings/ch13-functional-features/listing-13-29/Cargo.toml +++ b/FRENCH/listings/ch13-functional-features/listing-13-29/Cargo.toml @@ -1,7 +1,6 @@ [package] name = "minigrep" version = "0.1.0" -authors = ["Your Name "] edition = "2018" [dependencies] diff --git a/FRENCH/src/ch13-03-improving-our-io-project.md b/FRENCH/src/ch13-03-improving-our-io-project.md index a292a231e8..39c6468777 100644 --- a/FRENCH/src/ch13-03-improving-our-io-project.md +++ b/FRENCH/src/ch13-03-improving-our-io-project.md @@ -238,6 +238,30 @@ donné que nous prenons possession de `args` et que nous allons muter `args` en itérant dessus, nous pouvons ajouter le mot-clé `mut` dans la spécification du paramètre `args` pour le rendre mutable. + + +Nous avons aussi besoin de préciser que le type de slice de chaîne de +caractères d'erreur ne peut avoir que la durée de vie `'static`. Comme nous +retournions toujours des littéraux de chaînes de caractères, c'était bien le +cas auparavant. Cependant, lorsque nous avions une référence dans les +paramètres, il y avait une possibilité que la référence dans le type de retour +puisse avoir la même durée de vie que la référence dans les paramètres. Les +règles que nous avons vu dans [une section du chapitre +10][lifetime-elision] s'appliquaient également, et nous n'avons +pas besoin de préciser la durée de vie de `&str`. Avec le changement que nous +avons fait à `args`, les règles d'élision de durée de vie ne s'appliquent plus, +et nous devons renseigner la durée de vie `'static`. + @@ -263,12 +287,12 @@ met à jour le code de l'encart 12-23 afin d'utiliser la méthode `next` : Fichier : src/lib.rs -```rust +```rust,noplayground {{#rustdoc_include ../listings/ch13-functional-features/listing-13-27/src/lib.rs:here}} ``` @@ -432,3 +456,9 @@ performance. Mais ces deux implémentations sont-elles réellement équivalentes ? L'hypothèse intuitive pourrait être que la boucle de plus bas niveau sera plus rapide. Intéressons nous maintenant à leurs performances. + + + +[lifetime-elision]: ch10-03-lifetime-syntax.html From 7d7eca84edff709fdfa8c049a2c4b2485707c26f Mon Sep 17 00:00:00 2001 From: Jimskapt Date: Sat, 13 Nov 2021 20:48:29 +0100 Subject: [PATCH 29/64] =?UTF-8?q?=E2=99=BB=EF=B8=8F=20Update=20translation?= =?UTF-8?q?=20on=20ch13-04.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- FRENCH/src/ch13-04-performance.md | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/FRENCH/src/ch13-04-performance.md b/FRENCH/src/ch13-04-performance.md index 8592946ffe..38f202f8ec 100644 --- a/FRENCH/src/ch13-04-performance.md +++ b/FRENCH/src/ch13-04-performance.md @@ -5,14 +5,15 @@ ## Comparaison des performances : les boucles et les itérateurs Pour déterminer s'il faut utiliser des boucles ou des itérateurs, nous devons -savoir quelle version de notre fonction `rechercher` est la plus rapide : la -version avec une boucle `for` explicite ou la version avec des itérateurs ? +savoir quelle implémentation est la plus rapide : la version de la fonction +`rechercher` avec une boucle `for` explicite, ou la version avec des +itérateurs. @@ -248,7 +248,7 @@ test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out running 1 test test src/lib.rs - ajouter_un (line 5) ... ok -test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out +test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.27s ``` -```rust +```rust,noplayground,test_harness {{#rustdoc_include ../listings/ch14-more-about-cargo/listing-14-03/src/lib.rs:here}} ``` @@ -925,15 +925,13 @@ plusieurs identificateurs de licence séparés par `OR` pour avoir plusieurs licences pour votre projet. -Avec le nom unique, la version, les informations du développeur que `cargo new` -a ajouté lorsque vous avez créé la crate, ainsi que la description et la licence -que vous avez ajouté, le fichier *Cargo.toml* de ce projet qui est prêt à être -publié devrait ressembler à ceci : +Avec le nom unique, la version, la description et la licence que vous avez +ajouté, le fichier *Cargo.toml* de ce projet qui est prêt à être publié devrait +ressembler à ceci : -```rust +```rust,noplayground {{#rustdoc_include ../listings/ch14-more-about-cargo/no-listing-02-workspace-with-two-crates/ajout/ajouter-un/src/lib.rs}} ``` @@ -366,7 +366,7 @@ portée. Changez ensuite la fonction `main` pour appeler la fonction ``` @@ -504,12 +504,15 @@ utiliser la crate `rand` dans la crate `ajouter-un` : Nous pouvons maintenant ajouter `use rand;` au fichier *ajouter-un/src/lib.rs*, et compiler l'ensemble de l'espace de travail en lançant `cargo build` dans le -dossier *ajout*, ce qui va importer et compiler la crate `rand` : +dossier *ajout*, ce qui va importer et compiler la crate `rand`. Nous devriez +avoir un avertissement car nous n'avons pas utilisé le `rand` que nous avons +introduit dans la portée : ajouter-un/src/lib.rs:1:5 + | +1 | use rand; + | ^^^^ + | + = note: `#[warn(unused_imports)]` on by default + +warning: 1 warning emitted + Compiling additioneur v0.1.0 (file:///projects/ajout/additioneur) Finished dev [unoptimized + debuginfo] target(s) in 10.18s ``` @@ -576,7 +599,7 @@ error[E0432]: unresolved import `rand` -- > adder/src/main.rs:2:5 | 2 | use rand; - | ^^^^ no `rand` external crate + | ^^^^ no external crate `rand` ``` --> @@ -585,10 +608,10 @@ $ cargo build -- partie masquée ici -- Compiling additioneur v0.1.0 (file:///projects/ajout/additioneur) error[E0432]: unresolved import `rand` - -- > additioneur/src/main.rs:2:5 + --> additioneur/src/main.rs:2:5 | 2 | use rand; - | ^^^^ no `rand` external crate + | ^^^^ no external crate `rand` ``` -```rust +```rust,noplayground {{#rustdoc_include ../listings/ch14-more-about-cargo/no-listing-04-workspace-with-tests/ajout/ajouter-un/src/lib.rs}} ``` @@ -668,19 +691,19 @@ $ cargo test running 1 test test tests::it_works ... ok -test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out +test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s Running target/debug/deps/adder-49979ff40686fa8e running 0 tests -test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out +test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s Doc-tests add-one running 0 tests -test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out +test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s ``` --> @@ -694,19 +717,19 @@ $ cargo test running 1 test test tests::cela_fonctionne ... ok -test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out +test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s Running target/debug/deps/additioneur-49979ff40686fa8e running 0 tests -test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out +test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s Doc-tests ajouter-un running 0 tests -test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out +test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s ``` @@ -769,13 +792,13 @@ $ cargo test -p ajouter-un running 1 test test tests::cela_fonctionne ... ok -test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out +test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s Doc-tests ajouter-un running 0 tests -test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out +test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s ``` src/main.rs:1:1 | 1 | enum List { | ^^^^^^^^^ | - = note: ...which again requires processing `List`, completing the cycle - = note: cycle used when computing dropck types for `Canonical { max_universe: U0, variables: [], value: ParamEnvAnd { param_env: ParamEnv { caller_bounds: [], reveal: UserFacing, def_id: None }, value: List } }` - -error: aborting due to 2 previous errors + = note: ...which again requires computing drop-check constraints for `List`, completing the cycle + = note: cycle used when computing dropck types for `Canonical { max_universe: U0, variables: [], value: ParamEnvAnd { param_env: ParamEnv { caller_bounds: [], reveal: UserFacing }, value: List } }` Some errors have detailed explanations: E0072, E0391. For more information about an error, try `rustc --explain E0072`. -error: could not compile `cons-list`. - -To learn more, run the command again with --verbose. +error: could not compile `cons-list` due to 2 previous errors \ No newline at end of file diff --git a/FRENCH/listings/ch15-smart-pointers/listing-15-05/Cargo.toml b/FRENCH/listings/ch15-smart-pointers/listing-15-05/Cargo.toml index 86c8e956e1..ca5c90b779 100644 --- a/FRENCH/listings/ch15-smart-pointers/listing-15-05/Cargo.toml +++ b/FRENCH/listings/ch15-smart-pointers/listing-15-05/Cargo.toml @@ -1,7 +1,6 @@ [package] name = "cons-list" version = "0.1.0" -authors = ["Your Name "] edition = "2018" [dependencies] diff --git a/FRENCH/src/ch15-01-box.md b/FRENCH/src/ch15-01-box.md index 45d5ffd89b..f7f59e4e5f 100644 --- a/FRENCH/src/ch15-01-box.md +++ b/FRENCH/src/ch15-01-box.md @@ -499,12 +499,18 @@ after doing automatic regeneration, look at listings/ch15-smart-pointers/listing ```text - = help: insert indirection (e.g., a `Box`, `Rc`, or `&`) at some point to make `List` representable +help: insert some indirection (e.g., a `Box`, `Rc`, or `&`) to make `List` representable + | +2 | Cons(i32, Box), + | ^^^^ ^ ``` src/main.rs:16:7 | 16 | c.drop(); - | ^^^^ explicit destructor calls not allowed - -error: aborting due to previous error + | --^^^^-- + | | | + | | explicit destructor calls not allowed + | help: consider using `drop` function: `drop(c)` For more information about this error, try `rustc --explain E0040`. -error: could not compile `drop-example`. - -To learn more, run the command again with --verbose. +error: could not compile `drop-example` due to previous error \ No newline at end of file diff --git a/FRENCH/listings/ch15-smart-pointers/listing-15-16/Cargo.toml b/FRENCH/listings/ch15-smart-pointers/listing-15-16/Cargo.toml index e9ad457cf2..32dbbdd327 100644 --- a/FRENCH/listings/ch15-smart-pointers/listing-15-16/Cargo.toml +++ b/FRENCH/listings/ch15-smart-pointers/listing-15-16/Cargo.toml @@ -1,7 +1,6 @@ [package] name = "drop-example" version = "0.1.0" -authors = ["Your Name "] edition = "2018" [dependencies] From 90dc6234d20087ea3a8b2e0c4836efbe46e71453 Mon Sep 17 00:00:00 2001 From: Jimskapt Date: Sun, 14 Nov 2021 19:03:20 +0100 Subject: [PATCH 36/64] =?UTF-8?q?=E2=99=BB=EF=B8=8F=20Update=20translation?= =?UTF-8?q?=20on=20ch15-04.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ch15-smart-pointers/listing-15-17/Cargo.toml | 1 - .../ch15-smart-pointers/listing-15-17/output.txt | 6 +----- .../ch15-smart-pointers/listing-15-18/Cargo.toml | 1 - .../ch15-smart-pointers/listing-15-19/Cargo.toml | 1 - .../ch15-smart-pointers/listing-15-17/Cargo.toml | 1 - .../ch15-smart-pointers/listing-15-17/output.txt | 6 +----- .../ch15-smart-pointers/listing-15-18/Cargo.toml | 1 - .../ch15-smart-pointers/listing-15-19/Cargo.toml | 1 - FRENCH/src/ch15-04-rc.md | 10 +++++----- 9 files changed, 7 insertions(+), 21 deletions(-) diff --git a/FRENCH/listings-sources/ch15-smart-pointers/listing-15-17/Cargo.toml b/FRENCH/listings-sources/ch15-smart-pointers/listing-15-17/Cargo.toml index 86c8e956e1..ca5c90b779 100644 --- a/FRENCH/listings-sources/ch15-smart-pointers/listing-15-17/Cargo.toml +++ b/FRENCH/listings-sources/ch15-smart-pointers/listing-15-17/Cargo.toml @@ -1,7 +1,6 @@ [package] name = "cons-list" version = "0.1.0" -authors = ["Your Name "] edition = "2018" [dependencies] diff --git a/FRENCH/listings-sources/ch15-smart-pointers/listing-15-17/output.txt b/FRENCH/listings-sources/ch15-smart-pointers/listing-15-17/output.txt index efc2796a7c..274b151bda 100644 --- a/FRENCH/listings-sources/ch15-smart-pointers/listing-15-17/output.txt +++ b/FRENCH/listings-sources/ch15-smart-pointers/listing-15-17/output.txt @@ -10,9 +10,5 @@ error[E0382]: use of moved value: `a` 11 | let c = Cons(4, Box::new(a)); | ^ value used here after move -error: aborting due to previous error - For more information about this error, try `rustc --explain E0382`. -error: could not compile `cons-list`. - -To learn more, run the command again with --verbose. +error: could not compile `cons-list` due to previous error \ No newline at end of file diff --git a/FRENCH/listings-sources/ch15-smart-pointers/listing-15-18/Cargo.toml b/FRENCH/listings-sources/ch15-smart-pointers/listing-15-18/Cargo.toml index 86c8e956e1..ca5c90b779 100644 --- a/FRENCH/listings-sources/ch15-smart-pointers/listing-15-18/Cargo.toml +++ b/FRENCH/listings-sources/ch15-smart-pointers/listing-15-18/Cargo.toml @@ -1,7 +1,6 @@ [package] name = "cons-list" version = "0.1.0" -authors = ["Your Name "] edition = "2018" [dependencies] diff --git a/FRENCH/listings-sources/ch15-smart-pointers/listing-15-19/Cargo.toml b/FRENCH/listings-sources/ch15-smart-pointers/listing-15-19/Cargo.toml index 86c8e956e1..ca5c90b779 100644 --- a/FRENCH/listings-sources/ch15-smart-pointers/listing-15-19/Cargo.toml +++ b/FRENCH/listings-sources/ch15-smart-pointers/listing-15-19/Cargo.toml @@ -1,7 +1,6 @@ [package] name = "cons-list" version = "0.1.0" -authors = ["Your Name "] edition = "2018" [dependencies] diff --git a/FRENCH/listings/ch15-smart-pointers/listing-15-17/Cargo.toml b/FRENCH/listings/ch15-smart-pointers/listing-15-17/Cargo.toml index 86c8e956e1..ca5c90b779 100644 --- a/FRENCH/listings/ch15-smart-pointers/listing-15-17/Cargo.toml +++ b/FRENCH/listings/ch15-smart-pointers/listing-15-17/Cargo.toml @@ -1,7 +1,6 @@ [package] name = "cons-list" version = "0.1.0" -authors = ["Your Name "] edition = "2018" [dependencies] diff --git a/FRENCH/listings/ch15-smart-pointers/listing-15-17/output.txt b/FRENCH/listings/ch15-smart-pointers/listing-15-17/output.txt index 5966a71ec2..584eec3fb4 100644 --- a/FRENCH/listings/ch15-smart-pointers/listing-15-17/output.txt +++ b/FRENCH/listings/ch15-smart-pointers/listing-15-17/output.txt @@ -10,9 +10,5 @@ error[E0382]: use of moved value: `a` 11 | let c = Cons(4, Box::new(a)); | ^ value used here after move -error: aborting due to previous error - For more information about this error, try `rustc --explain E0382`. -error: could not compile `cons-list`. - -To learn more, run the command again with --verbose. +error: could not compile `cons-list` due to previous error \ No newline at end of file diff --git a/FRENCH/listings/ch15-smart-pointers/listing-15-18/Cargo.toml b/FRENCH/listings/ch15-smart-pointers/listing-15-18/Cargo.toml index 86c8e956e1..ca5c90b779 100644 --- a/FRENCH/listings/ch15-smart-pointers/listing-15-18/Cargo.toml +++ b/FRENCH/listings/ch15-smart-pointers/listing-15-18/Cargo.toml @@ -1,7 +1,6 @@ [package] name = "cons-list" version = "0.1.0" -authors = ["Your Name "] edition = "2018" [dependencies] diff --git a/FRENCH/listings/ch15-smart-pointers/listing-15-19/Cargo.toml b/FRENCH/listings/ch15-smart-pointers/listing-15-19/Cargo.toml index 86c8e956e1..ca5c90b779 100644 --- a/FRENCH/listings/ch15-smart-pointers/listing-15-19/Cargo.toml +++ b/FRENCH/listings/ch15-smart-pointers/listing-15-19/Cargo.toml @@ -1,7 +1,6 @@ [package] name = "cons-list" version = "0.1.0" -authors = ["Your Name "] edition = "2018" [dependencies] diff --git a/FRENCH/src/ch15-04-rc.md b/FRENCH/src/ch15-04-rc.md index a894eda5f0..f79534b773 100644 --- a/FRENCH/src/ch15-04-rc.md +++ b/FRENCH/src/ch15-04-rc.md @@ -24,15 +24,15 @@ d'extrémités qui pointent sur lui. Pour permettre la possession multiple, Rust a le type `Rc`, qui est une abréviation pour `Reference Counting` *(compteur de références)*. Le type -`Rc` assure le suivi du nombre de références vers une valeur, ce qui -détermine si la valeur est toujours utilisée ou non. S'il y a zéro références +`Rc` assure le suivi du nombre de références vers une valeur, afin de +déterminer si la valeur est toujours utilisée ou non. S'il y a zéro références vers une valeur, la valeur peut être nettoyée sans qu'aucune référence devienne invalide. From 02e39a3bccf5825a4e1390d38b329a3bc5fcda87 Mon Sep 17 00:00:00 2001 From: Jimskapt Date: Sun, 14 Nov 2021 19:39:05 +0100 Subject: [PATCH 37/64] =?UTF-8?q?=E2=99=BB=EF=B8=8F=20Update=20translation?= =?UTF-8?q?=20on=20ch15-05.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../listing-15-20/Cargo.toml | 1 - .../listing-15-21/Cargo.toml | 1 - .../listing-15-21/output.txt | 13 +++---- .../listing-15-22/Cargo.toml | 1 - .../listing-15-22/src/lib.rs | 2 - .../listing-15-23/Cargo.toml | 1 - .../listing-15-23/output.txt | 8 ++-- .../listing-15-24/Cargo.toml | 1 - .../Cargo.toml | 1 - .../output.txt | 6 +-- .../listing-15-20/Cargo.toml | 1 - .../listing-15-21/Cargo.toml | 1 - .../listing-15-21/output.txt | 13 +++---- .../listing-15-22/Cargo.toml | 1 - .../listing-15-22/src/lib.rs | 2 - .../listing-15-23/Cargo.toml | 1 - .../listing-15-23/output.txt | 8 ++-- .../listing-15-24/Cargo.toml | 1 - .../Cargo.toml | 1 - .../output.txt | 6 +-- FRENCH/src/ch15-05-interior-mutability.md | 39 ++++++++++--------- 21 files changed, 42 insertions(+), 67 deletions(-) diff --git a/FRENCH/listings-sources/ch15-smart-pointers/listing-15-20/Cargo.toml b/FRENCH/listings-sources/ch15-smart-pointers/listing-15-20/Cargo.toml index b230a2326b..2b3ecf580b 100644 --- a/FRENCH/listings-sources/ch15-smart-pointers/listing-15-20/Cargo.toml +++ b/FRENCH/listings-sources/ch15-smart-pointers/listing-15-20/Cargo.toml @@ -1,7 +1,6 @@ [package] name = "limit-tracker" version = "0.1.0" -authors = ["Your Name "] edition = "2018" [dependencies] diff --git a/FRENCH/listings-sources/ch15-smart-pointers/listing-15-21/Cargo.toml b/FRENCH/listings-sources/ch15-smart-pointers/listing-15-21/Cargo.toml index b230a2326b..2b3ecf580b 100644 --- a/FRENCH/listings-sources/ch15-smart-pointers/listing-15-21/Cargo.toml +++ b/FRENCH/listings-sources/ch15-smart-pointers/listing-15-21/Cargo.toml @@ -1,7 +1,6 @@ [package] name = "limit-tracker" version = "0.1.0" -authors = ["Your Name "] edition = "2018" [dependencies] diff --git a/FRENCH/listings-sources/ch15-smart-pointers/listing-15-21/output.txt b/FRENCH/listings-sources/ch15-smart-pointers/listing-15-21/output.txt index 9a1b285666..0b6f7beb7a 100644 --- a/FRENCH/listings-sources/ch15-smart-pointers/listing-15-21/output.txt +++ b/FRENCH/listings-sources/ch15-smart-pointers/listing-15-21/output.txt @@ -3,14 +3,13 @@ $ cargo test error[E0596]: cannot borrow `self.sent_messages` as mutable, as it is behind a `&` reference -- > src/lib.rs:58:13 | -57 | fn send(&self, message: &str) { - | ----- help: consider changing this to be a mutable reference: `&mut self` +2 | fn send(&self, msg: &str); + | ----- help: consider changing that to be a mutable reference: `&mut self` +... 58 | self.sent_messages.push(String::from(message)); | ^^^^^^^^^^^^^^^^^^ `self` is a `&` reference, so the data it refers to cannot be borrowed as mutable -error: aborting due to previous error - For more information about this error, try `rustc --explain E0596`. -error: could not compile `limit-tracker`. - -To learn more, run the command again with --verbose. +error: could not compile `limit-tracker` due to previous error +warning: build failed, waiting for other jobs to finish... +error: build failed \ No newline at end of file diff --git a/FRENCH/listings-sources/ch15-smart-pointers/listing-15-22/Cargo.toml b/FRENCH/listings-sources/ch15-smart-pointers/listing-15-22/Cargo.toml index b230a2326b..2b3ecf580b 100644 --- a/FRENCH/listings-sources/ch15-smart-pointers/listing-15-22/Cargo.toml +++ b/FRENCH/listings-sources/ch15-smart-pointers/listing-15-22/Cargo.toml @@ -1,7 +1,6 @@ [package] name = "limit-tracker" version = "0.1.0" -authors = ["Your Name "] edition = "2018" [dependencies] diff --git a/FRENCH/listings-sources/ch15-smart-pointers/listing-15-22/src/lib.rs b/FRENCH/listings-sources/ch15-smart-pointers/listing-15-22/src/lib.rs index dc259f7fca..539578ea2d 100644 --- a/FRENCH/listings-sources/ch15-smart-pointers/listing-15-22/src/lib.rs +++ b/FRENCH/listings-sources/ch15-smart-pointers/listing-15-22/src/lib.rs @@ -76,5 +76,3 @@ mod tests { } } // ANCHOR_END: here - -fn main() {} diff --git a/FRENCH/listings-sources/ch15-smart-pointers/listing-15-23/Cargo.toml b/FRENCH/listings-sources/ch15-smart-pointers/listing-15-23/Cargo.toml index b230a2326b..2b3ecf580b 100644 --- a/FRENCH/listings-sources/ch15-smart-pointers/listing-15-23/Cargo.toml +++ b/FRENCH/listings-sources/ch15-smart-pointers/listing-15-23/Cargo.toml @@ -1,7 +1,6 @@ [package] name = "limit-tracker" version = "0.1.0" -authors = ["Your Name "] edition = "2018" [dependencies] diff --git a/FRENCH/listings-sources/ch15-smart-pointers/listing-15-23/output.txt b/FRENCH/listings-sources/ch15-smart-pointers/listing-15-23/output.txt index 9d69d439c7..22c2f79907 100644 --- a/FRENCH/listings-sources/ch15-smart-pointers/listing-15-23/output.txt +++ b/FRENCH/listings-sources/ch15-smart-pointers/listing-15-23/output.txt @@ -1,7 +1,7 @@ $ cargo test Compiling limit-tracker v0.1.0 (file:///projects/limit-tracker) Finished test [unoptimized + debuginfo] target(s) in 0.91s - Running target/debug/deps/limit_tracker-d1b2637139dca6ca + Running unittests (target/debug/deps/limit_tracker-e599811fa246dbde) running 1 test test tests::it_sends_an_over_75_percent_warning_message ... FAILED @@ -9,13 +9,13 @@ test tests::it_sends_an_over_75_percent_warning_message ... FAILED failures: ---- tests::it_sends_an_over_75_percent_warning_message stdout ---- -thread 'main' panicked at 'already borrowed: BorrowMutError', src/libcore/result.rs:1188:5 -note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace. +thread 'main' panicked at 'already borrowed: BorrowMutError', src/lib.rs:60:53 +note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace failures: tests::it_sends_an_over_75_percent_warning_message -test result: FAILED. 0 passed; 1 failed; 0 ignored; 0 measured; 0 filtered out +test result: FAILED. 0 passed; 1 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s error: test failed, to rerun pass '--lib' diff --git a/FRENCH/listings-sources/ch15-smart-pointers/listing-15-24/Cargo.toml b/FRENCH/listings-sources/ch15-smart-pointers/listing-15-24/Cargo.toml index 86c8e956e1..ca5c90b779 100644 --- a/FRENCH/listings-sources/ch15-smart-pointers/listing-15-24/Cargo.toml +++ b/FRENCH/listings-sources/ch15-smart-pointers/listing-15-24/Cargo.toml @@ -1,7 +1,6 @@ [package] name = "cons-list" version = "0.1.0" -authors = ["Your Name "] edition = "2018" [dependencies] diff --git a/FRENCH/listings-sources/ch15-smart-pointers/no-listing-01-cant-borrow-immutable-as-mutable/Cargo.toml b/FRENCH/listings-sources/ch15-smart-pointers/no-listing-01-cant-borrow-immutable-as-mutable/Cargo.toml index 1558eb615e..9220706fc6 100644 --- a/FRENCH/listings-sources/ch15-smart-pointers/no-listing-01-cant-borrow-immutable-as-mutable/Cargo.toml +++ b/FRENCH/listings-sources/ch15-smart-pointers/no-listing-01-cant-borrow-immutable-as-mutable/Cargo.toml @@ -1,7 +1,6 @@ [package] name = "borrowing" version = "0.1.0" -authors = ["Your Name "] edition = "2018" [dependencies] diff --git a/FRENCH/listings-sources/ch15-smart-pointers/no-listing-01-cant-borrow-immutable-as-mutable/output.txt b/FRENCH/listings-sources/ch15-smart-pointers/no-listing-01-cant-borrow-immutable-as-mutable/output.txt index 918e38e9ce..1330081494 100644 --- a/FRENCH/listings-sources/ch15-smart-pointers/no-listing-01-cant-borrow-immutable-as-mutable/output.txt +++ b/FRENCH/listings-sources/ch15-smart-pointers/no-listing-01-cant-borrow-immutable-as-mutable/output.txt @@ -8,9 +8,5 @@ error[E0596]: cannot borrow `x` as mutable, as it is not declared as mutable 3 | let y = &mut x; | ^^^^^^ cannot borrow as mutable -error: aborting due to previous error - For more information about this error, try `rustc --explain E0596`. -error: could not compile `borrowing`. - -To learn more, run the command again with --verbose. +error: could not compile `borrowing` due to previous error \ No newline at end of file diff --git a/FRENCH/listings/ch15-smart-pointers/listing-15-20/Cargo.toml b/FRENCH/listings/ch15-smart-pointers/listing-15-20/Cargo.toml index b230a2326b..2b3ecf580b 100644 --- a/FRENCH/listings/ch15-smart-pointers/listing-15-20/Cargo.toml +++ b/FRENCH/listings/ch15-smart-pointers/listing-15-20/Cargo.toml @@ -1,7 +1,6 @@ [package] name = "limit-tracker" version = "0.1.0" -authors = ["Your Name "] edition = "2018" [dependencies] diff --git a/FRENCH/listings/ch15-smart-pointers/listing-15-21/Cargo.toml b/FRENCH/listings/ch15-smart-pointers/listing-15-21/Cargo.toml index b230a2326b..2b3ecf580b 100644 --- a/FRENCH/listings/ch15-smart-pointers/listing-15-21/Cargo.toml +++ b/FRENCH/listings/ch15-smart-pointers/listing-15-21/Cargo.toml @@ -1,7 +1,6 @@ [package] name = "limit-tracker" version = "0.1.0" -authors = ["Your Name "] edition = "2018" [dependencies] diff --git a/FRENCH/listings/ch15-smart-pointers/listing-15-21/output.txt b/FRENCH/listings/ch15-smart-pointers/listing-15-21/output.txt index 6f267d651c..ccd15f0948 100644 --- a/FRENCH/listings/ch15-smart-pointers/listing-15-21/output.txt +++ b/FRENCH/listings/ch15-smart-pointers/listing-15-21/output.txt @@ -3,14 +3,13 @@ $ cargo test error[E0596]: cannot borrow `self.messages_envoyes` as mutable, as it is behind a `&` reference --> src/lib.rs:58:13 | -57 | fn envoyer(&self, message: &str) { - | ----- help: consider changing this to be a mutable reference: `&mut self` +2 | fn envoyer(&self, message: &str); + | ----- help: consider changing that to be a mutable reference: `&mut self` +... 58 | self.messages_envoyes.push(String::from(message)); | ^^^^^^^^^^^^^^^^^^^^^ `self` is a `&` reference, so the data it refers to cannot be borrowed as mutable -error: aborting due to previous error - For more information about this error, try `rustc --explain E0596`. -error: could not compile `limit-tracker`. - -To learn more, run the command again with --verbose. +error: could not compile `limit-tracker` due to previous error +warning: build failed, waiting for other jobs to finish... +error: build failed \ No newline at end of file diff --git a/FRENCH/listings/ch15-smart-pointers/listing-15-22/Cargo.toml b/FRENCH/listings/ch15-smart-pointers/listing-15-22/Cargo.toml index b230a2326b..2b3ecf580b 100644 --- a/FRENCH/listings/ch15-smart-pointers/listing-15-22/Cargo.toml +++ b/FRENCH/listings/ch15-smart-pointers/listing-15-22/Cargo.toml @@ -1,7 +1,6 @@ [package] name = "limit-tracker" version = "0.1.0" -authors = ["Your Name "] edition = "2018" [dependencies] diff --git a/FRENCH/listings/ch15-smart-pointers/listing-15-22/src/lib.rs b/FRENCH/listings/ch15-smart-pointers/listing-15-22/src/lib.rs index 2dc1021e6c..5578ac7e3e 100644 --- a/FRENCH/listings/ch15-smart-pointers/listing-15-22/src/lib.rs +++ b/FRENCH/listings/ch15-smart-pointers/listing-15-22/src/lib.rs @@ -76,5 +76,3 @@ mod tests { } } // ANCHOR_END: here - -fn main() {} diff --git a/FRENCH/listings/ch15-smart-pointers/listing-15-23/Cargo.toml b/FRENCH/listings/ch15-smart-pointers/listing-15-23/Cargo.toml index b230a2326b..2b3ecf580b 100644 --- a/FRENCH/listings/ch15-smart-pointers/listing-15-23/Cargo.toml +++ b/FRENCH/listings/ch15-smart-pointers/listing-15-23/Cargo.toml @@ -1,7 +1,6 @@ [package] name = "limit-tracker" version = "0.1.0" -authors = ["Your Name "] edition = "2018" [dependencies] diff --git a/FRENCH/listings/ch15-smart-pointers/listing-15-23/output.txt b/FRENCH/listings/ch15-smart-pointers/listing-15-23/output.txt index 22d63f60e1..593855722c 100644 --- a/FRENCH/listings/ch15-smart-pointers/listing-15-23/output.txt +++ b/FRENCH/listings/ch15-smart-pointers/listing-15-23/output.txt @@ -1,7 +1,7 @@ $ cargo test Compiling limit-tracker v0.1.0 (file:///projects/limit-tracker) Finished test [unoptimized + debuginfo] target(s) in 0.91s - Running target/debug/deps/limit_tracker-d1b2637139dca6ca + Running unittests (target/debug/deps/limit_tracker-e599811fa246dbde) running 1 test test tests::envoi_d_un_message_d_avertissement_superieur_a_75_pourcent ... FAILED @@ -9,13 +9,13 @@ test tests::envoi_d_un_message_d_avertissement_superieur_a_75_pourcent ... FAILE failures: ---- tests::envoi_d_un_message_d_avertissement_superieur_a_75_pourcent stdout ---- -thread 'main' panicked at 'already borrowed: BorrowMutError', src/libcore/result.rs:1188:5 -note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace. +thread 'main' panicked at 'already borrowed: BorrowMutError', src/lib.rs:60:53 +note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace failures: tests::envoi_d_un_message_d_avertissement_superieur_a_75_pourcent -test result: FAILED. 0 passed; 1 failed; 0 ignored; 0 measured; 0 filtered out +test result: FAILED. 0 passed; 1 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s error: test failed, to rerun pass '--lib' diff --git a/FRENCH/listings/ch15-smart-pointers/listing-15-24/Cargo.toml b/FRENCH/listings/ch15-smart-pointers/listing-15-24/Cargo.toml index 86c8e956e1..ca5c90b779 100644 --- a/FRENCH/listings/ch15-smart-pointers/listing-15-24/Cargo.toml +++ b/FRENCH/listings/ch15-smart-pointers/listing-15-24/Cargo.toml @@ -1,7 +1,6 @@ [package] name = "cons-list" version = "0.1.0" -authors = ["Your Name "] edition = "2018" [dependencies] diff --git a/FRENCH/listings/ch15-smart-pointers/no-listing-01-cant-borrow-immutable-as-mutable/Cargo.toml b/FRENCH/listings/ch15-smart-pointers/no-listing-01-cant-borrow-immutable-as-mutable/Cargo.toml index 1558eb615e..9220706fc6 100644 --- a/FRENCH/listings/ch15-smart-pointers/no-listing-01-cant-borrow-immutable-as-mutable/Cargo.toml +++ b/FRENCH/listings/ch15-smart-pointers/no-listing-01-cant-borrow-immutable-as-mutable/Cargo.toml @@ -1,7 +1,6 @@ [package] name = "borrowing" version = "0.1.0" -authors = ["Your Name "] edition = "2018" [dependencies] diff --git a/FRENCH/listings/ch15-smart-pointers/no-listing-01-cant-borrow-immutable-as-mutable/output.txt b/FRENCH/listings/ch15-smart-pointers/no-listing-01-cant-borrow-immutable-as-mutable/output.txt index c8e5592de7..75c9f68012 100644 --- a/FRENCH/listings/ch15-smart-pointers/no-listing-01-cant-borrow-immutable-as-mutable/output.txt +++ b/FRENCH/listings/ch15-smart-pointers/no-listing-01-cant-borrow-immutable-as-mutable/output.txt @@ -8,9 +8,5 @@ error[E0596]: cannot borrow `x` as mutable, as it is not declared as mutable 3 | let y = &mut x; | ^^^^^^ cannot borrow as mutable -error: aborting due to previous error - For more information about this error, try `rustc --explain E0596`. -error: could not compile `borrowing`. - -To learn more, run the command again with --verbose. +error: could not compile `borrowing` due to previous error \ No newline at end of file diff --git a/FRENCH/src/ch15-05-interior-mutability.md b/FRENCH/src/ch15-05-interior-mutability.md index dab287e3f6..cea963f965 100644 --- a/FRENCH/src/ch15-05-interior-mutability.md +++ b/FRENCH/src/ch15-05-interior-mutability.md @@ -322,12 +322,12 @@ faire est d'implémenter un trait `Messager` que nous allons fournir. L'encart Fichier : src/lib.rs -```rust +```rust,noplayground {{#rustdoc_include ../listings/ch15-smart-pointers/listing-15-20/src/lib.rs}} ``` @@ -343,20 +343,21 @@ un certain seuil La partie la plus importante de ce code est celle où le trait `Messager` a une méthode qui fait appel à `envoyer` en prenant une référence immuable à `self` -ainsi que le texte du message. C'est l'interface que notre mock object doit -avoir. L'autre partie importante est lorsque nous souhaitons tester le +ainsi que le texte du message. Ce trait est l'interface que notre mock object +doit implémenter afin que le mock puisse être utilisé de la même manière que +l'objet réel. L'autre partie importante est lorsque nous souhaitons tester le comportement de la méthode `set_valeur` sur le `TraqueurDeLimite`. Nous pouvons changer ce que nous envoyons dans le paramètre `valeur`, mais `set_valeur` ne nous retourne rien qui nous permet de le vérifier. Nous voulons pouvoir dire que @@ -456,12 +457,12 @@ However, there’s one problem with this test, as shown here: Cependant, il reste un problème avec ce test, qui est montré ci-dessous : -```text +```console {{#include ../listings/ch15-smart-pointers/listing-15-21/output.txt}} ``` @@ -482,14 +483,14 @@ vous constaterez le message d'erreur que vous obtiendrez). C'est une situation dans laquelle la mutabilité interne peut nous aider ! -Nous allons stocker `messages_envoyes` dans une `RefCell`, et ensuite le -message de `envoyer` pourra modifier `messages_envoyes` pour stocker les +Nous allons stocker `messages_envoyes` dans une `RefCell`, et ensuite la +méthode `envoyer` pourra modifier `messages_envoyes` pour stocker les messages que nous avons avons vu. L'encart 15-22 montre à quoi cela peut ressembler : @@ -500,12 +501,12 @@ ressembler : Fichier : src/lib.rs -```rust +```rust,noplayground {{#rustdoc_include ../listings/ch15-smart-pointers/listing-15-22/src/lib.rs:here}} ``` From 0acd9a2e38e3c3ac3d1959b13a8c83e000a89eff Mon Sep 17 00:00:00 2001 From: Jimskapt Date: Sun, 14 Nov 2021 21:02:39 +0100 Subject: [PATCH 38/64] =?UTF-8?q?=E2=99=BB=EF=B8=8F=20Update=20translation?= =?UTF-8?q?=20on=20ch15-06.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../listing-15-25/Cargo.toml | 1 - .../listing-15-26/Cargo.toml | 1 - .../listing-15-27/Cargo.toml | 1 - .../listing-15-28/Cargo.toml | 1 - .../listing-15-29/Cargo.toml | 1 - .../listing-15-25/Cargo.toml | 1 - .../listing-15-26/Cargo.toml | 1 - .../listing-15-27/Cargo.toml | 1 - .../listing-15-28/Cargo.toml | 1 - .../listing-15-29/Cargo.toml | 1 - FRENCH/src/ch15-06-reference-cycles.md | 39 +++++++++---------- 11 files changed, 19 insertions(+), 30 deletions(-) diff --git a/FRENCH/listings-sources/ch15-smart-pointers/listing-15-25/Cargo.toml b/FRENCH/listings-sources/ch15-smart-pointers/listing-15-25/Cargo.toml index 86c8e956e1..ca5c90b779 100644 --- a/FRENCH/listings-sources/ch15-smart-pointers/listing-15-25/Cargo.toml +++ b/FRENCH/listings-sources/ch15-smart-pointers/listing-15-25/Cargo.toml @@ -1,7 +1,6 @@ [package] name = "cons-list" version = "0.1.0" -authors = ["Your Name "] edition = "2018" [dependencies] diff --git a/FRENCH/listings-sources/ch15-smart-pointers/listing-15-26/Cargo.toml b/FRENCH/listings-sources/ch15-smart-pointers/listing-15-26/Cargo.toml index 86c8e956e1..ca5c90b779 100644 --- a/FRENCH/listings-sources/ch15-smart-pointers/listing-15-26/Cargo.toml +++ b/FRENCH/listings-sources/ch15-smart-pointers/listing-15-26/Cargo.toml @@ -1,7 +1,6 @@ [package] name = "cons-list" version = "0.1.0" -authors = ["Your Name "] edition = "2018" [dependencies] diff --git a/FRENCH/listings-sources/ch15-smart-pointers/listing-15-27/Cargo.toml b/FRENCH/listings-sources/ch15-smart-pointers/listing-15-27/Cargo.toml index d6774b817a..9b981e540a 100644 --- a/FRENCH/listings-sources/ch15-smart-pointers/listing-15-27/Cargo.toml +++ b/FRENCH/listings-sources/ch15-smart-pointers/listing-15-27/Cargo.toml @@ -1,7 +1,6 @@ [package] name = "tree" version = "0.1.0" -authors = ["Your Name "] edition = "2018" [dependencies] diff --git a/FRENCH/listings-sources/ch15-smart-pointers/listing-15-28/Cargo.toml b/FRENCH/listings-sources/ch15-smart-pointers/listing-15-28/Cargo.toml index d6774b817a..9b981e540a 100644 --- a/FRENCH/listings-sources/ch15-smart-pointers/listing-15-28/Cargo.toml +++ b/FRENCH/listings-sources/ch15-smart-pointers/listing-15-28/Cargo.toml @@ -1,7 +1,6 @@ [package] name = "tree" version = "0.1.0" -authors = ["Your Name "] edition = "2018" [dependencies] diff --git a/FRENCH/listings-sources/ch15-smart-pointers/listing-15-29/Cargo.toml b/FRENCH/listings-sources/ch15-smart-pointers/listing-15-29/Cargo.toml index d6774b817a..9b981e540a 100644 --- a/FRENCH/listings-sources/ch15-smart-pointers/listing-15-29/Cargo.toml +++ b/FRENCH/listings-sources/ch15-smart-pointers/listing-15-29/Cargo.toml @@ -1,7 +1,6 @@ [package] name = "tree" version = "0.1.0" -authors = ["Your Name "] edition = "2018" [dependencies] diff --git a/FRENCH/listings/ch15-smart-pointers/listing-15-25/Cargo.toml b/FRENCH/listings/ch15-smart-pointers/listing-15-25/Cargo.toml index 86c8e956e1..ca5c90b779 100644 --- a/FRENCH/listings/ch15-smart-pointers/listing-15-25/Cargo.toml +++ b/FRENCH/listings/ch15-smart-pointers/listing-15-25/Cargo.toml @@ -1,7 +1,6 @@ [package] name = "cons-list" version = "0.1.0" -authors = ["Your Name "] edition = "2018" [dependencies] diff --git a/FRENCH/listings/ch15-smart-pointers/listing-15-26/Cargo.toml b/FRENCH/listings/ch15-smart-pointers/listing-15-26/Cargo.toml index 86c8e956e1..ca5c90b779 100644 --- a/FRENCH/listings/ch15-smart-pointers/listing-15-26/Cargo.toml +++ b/FRENCH/listings/ch15-smart-pointers/listing-15-26/Cargo.toml @@ -1,7 +1,6 @@ [package] name = "cons-list" version = "0.1.0" -authors = ["Your Name "] edition = "2018" [dependencies] diff --git a/FRENCH/listings/ch15-smart-pointers/listing-15-27/Cargo.toml b/FRENCH/listings/ch15-smart-pointers/listing-15-27/Cargo.toml index d6774b817a..9b981e540a 100644 --- a/FRENCH/listings/ch15-smart-pointers/listing-15-27/Cargo.toml +++ b/FRENCH/listings/ch15-smart-pointers/listing-15-27/Cargo.toml @@ -1,7 +1,6 @@ [package] name = "tree" version = "0.1.0" -authors = ["Your Name "] edition = "2018" [dependencies] diff --git a/FRENCH/listings/ch15-smart-pointers/listing-15-28/Cargo.toml b/FRENCH/listings/ch15-smart-pointers/listing-15-28/Cargo.toml index d6774b817a..9b981e540a 100644 --- a/FRENCH/listings/ch15-smart-pointers/listing-15-28/Cargo.toml +++ b/FRENCH/listings/ch15-smart-pointers/listing-15-28/Cargo.toml @@ -1,7 +1,6 @@ [package] name = "tree" version = "0.1.0" -authors = ["Your Name "] edition = "2018" [dependencies] diff --git a/FRENCH/listings/ch15-smart-pointers/listing-15-29/Cargo.toml b/FRENCH/listings/ch15-smart-pointers/listing-15-29/Cargo.toml index d6774b817a..9b981e540a 100644 --- a/FRENCH/listings/ch15-smart-pointers/listing-15-29/Cargo.toml +++ b/FRENCH/listings/ch15-smart-pointers/listing-15-29/Cargo.toml @@ -1,7 +1,6 @@ [package] name = "tree" version = "0.1.0" -authors = ["Your Name "] edition = "2018" [dependencies] diff --git a/FRENCH/src/ch15-06-reference-cycles.md b/FRENCH/src/ch15-06-reference-cycles.md index 4b4ed6cb8e..f9fcea5da4 100644 --- a/FRENCH/src/ch15-06-reference-cycles.md +++ b/FRENCH/src/ch15-06-reference-cycles.md @@ -170,30 +170,29 @@ pour le moment, nous obtenons ceci : ``` Les compteurs de références des instances de `Rc` valent tous les deux 2 pour `a` et `b` après avoir modifié `a` pour qu'elle pointe sur `b`. A la fin -du `main`, Rust va nettoyer d'abord `b`, ce qui va réduire le compteur de -l'instance `Rc` de `b` de 1. - - - -Cependant, comme `a` pointe toujours sur le `Rc` qui était sur `b`, le -compteur de son `Rc` vaudra toujours 1 au lieu de 0, donc la mémoire de -sur le tas de ce `Rc` ne sera pas nettoyé. La mémoire va juste rester ici -avec un compteur à 1, pour toujours. Pour représenter la boucle de références, -nous avons créé un diagramme dans l'illustration 15-4. +du `main`, Rust nettoie d'abord la variable `b`, ce qui décrémente le compteur +de références dans l'instance `Rc` de 2 à 1. La mémoire utilisée sur le +tas par `Rc` ne sera pas libérée à ce moment, car son compteur de +références est à 1, et non pas 0. Puis, Rust libère `a`, ce qui décrémente le +compteur `a` de références `Rc` de 2 à 1, également. La mémoire de cette +instance ne peut pas non plus être libérée car l'autre instance `Rc` y +fait toujours référence. La mémoire alouée à la liste ne sera jamais libérée. +Pour représenter cette boucle de références, nous avons créé un diagramme dans +l'illustration 15-4. src/main.rs:10:31 | 8 | let valeur = String::from("salut"); - | ------ move occurs because `valeur` has type `std::string::String`, which does not implement the `Copy` trait + | ------ move occurs because `valeur` has type `String`, which does not implement the `Copy` trait 9 | tx.send(valeur).unwrap(); | ------ value moved here 10 | println!("valeur vaut {}", valeur); | ^^^^^^ value borrowed here after move -error: aborting due to previous error - For more information about this error, try `rustc --explain E0382`. -error: could not compile `message-passing`. - -To learn more, run the command again with --verbose. +error: could not compile `message-passing` due to previous error \ No newline at end of file diff --git a/FRENCH/listings/ch16-fearless-concurrency/listing-16-10/Cargo.toml b/FRENCH/listings/ch16-fearless-concurrency/listing-16-10/Cargo.toml index 8fd8808ea5..078faf4d0b 100644 --- a/FRENCH/listings/ch16-fearless-concurrency/listing-16-10/Cargo.toml +++ b/FRENCH/listings/ch16-fearless-concurrency/listing-16-10/Cargo.toml @@ -1,7 +1,6 @@ [package] name = "message-passing" version = "0.1.0" -authors = ["Your Name "] edition = "2018" [dependencies] diff --git a/FRENCH/listings/ch16-fearless-concurrency/listing-16-11/Cargo.toml b/FRENCH/listings/ch16-fearless-concurrency/listing-16-11/Cargo.toml index 8fd8808ea5..078faf4d0b 100644 --- a/FRENCH/listings/ch16-fearless-concurrency/listing-16-11/Cargo.toml +++ b/FRENCH/listings/ch16-fearless-concurrency/listing-16-11/Cargo.toml @@ -1,7 +1,6 @@ [package] name = "message-passing" version = "0.1.0" -authors = ["Your Name "] edition = "2018" [dependencies] diff --git a/FRENCH/listings/ch16-fearless-concurrency/listing-16-11/src/main.rs b/FRENCH/listings/ch16-fearless-concurrency/listing-16-11/src/main.rs index 2acb624b8e..0577544790 100644 --- a/FRENCH/listings/ch16-fearless-concurrency/listing-16-11/src/main.rs +++ b/FRENCH/listings/ch16-fearless-concurrency/listing-16-11/src/main.rs @@ -8,7 +8,7 @@ fn main() { let (tx, rx) = mpsc::channel(); - let tx1 = mpsc::Sender::clone(&tx); + let tx1 = tx.clone(); thread::spawn(move || { let valeurs = vec![ String::from("salutations"), diff --git a/FRENCH/src/ch16-02-message-passing.md b/FRENCH/src/ch16-02-message-passing.md index b7fa040803..3a3d67edf7 100644 --- a/FRENCH/src/ch16-02-message-passing.md +++ b/FRENCH/src/ch16-02-message-passing.md @@ -8,7 +8,7 @@ One increasingly popular approach to ensuring safe concurrency is *message passing*, where threads or actors communicate by sending each other messages containing data. Here’s the idea in a slogan from [the Go language -documentation](https://golang.org/doc/effective_go.html#concurrency): +documentation](https://golang.org/doc/effective_go.html#concurrency): “Do not communicate by sharing memory; instead, share memory by communicating.” --> @@ -445,12 +445,12 @@ entre chaque message. Fichier : src/main.rs -```rust +```rust,noplayground {{#rustdoc_include ../listings/ch16-fearless-concurrency/listing-16-10/src/main.rs}} ``` @@ -550,12 +550,12 @@ valeurs au même récepteur. Nous pouvons faire ceci en clonant la partie Fichier : src/main.rs -```rust +```rust,noplayground {{#rustdoc_include ../listings/ch16-fearless-concurrency/listing-16-11/src/main.rs:here}} ``` From e6725e5ce1d1fe828af72a845a5b2204c04448dd Mon Sep 17 00:00:00 2001 From: Jimskapt Date: Mon, 15 Nov 2021 19:09:22 +0100 Subject: [PATCH 41/64] =?UTF-8?q?=F0=9F=93=A6=EF=B8=8F=20Add=20output-only?= =?UTF-8?q?=20listings=20for=20ch14.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../output-only-01-adder-crate/add/.gitignore | 1 + .../output-only-01-adder-crate/add/Cargo.lock | 5 ++ .../output-only-01-adder-crate/add/Cargo.toml | 5 ++ .../add/rustfmt-ignore | 2 + .../output-only-02-add-one/add/.gitignore | 1 + .../output-only-02-add-one/add/Cargo.lock | 13 +++ .../output-only-02-add-one/add/Cargo.toml | 6 ++ .../add/adder/Cargo.toml | 8 ++ .../add/adder/src/main.rs | 3 + .../output-only-03-use-rand/add/Cargo.lock | 90 +++++++++++++++++++ .../output-only-03-use-rand/add/Cargo.toml | 6 ++ .../add/add-one/Cargo.toml | 7 ++ .../add/add-one/src/lib.rs | 5 ++ .../add/adder/Cargo.toml | 8 ++ .../add/adder/src/main.rs | 11 +++ .../ajout/.gitignore | 1 + .../ajout/Cargo.lock | 5 ++ .../ajout/Cargo.toml | 5 ++ .../ajout/rustfmt-ignore | 2 + .../output-only-02-add-one/ajout/.gitignore | 1 + .../output-only-02-add-one/ajout/Cargo.lock | 13 +++ .../output-only-02-add-one/ajout/Cargo.toml | 6 ++ .../ajout/additioneur/Cargo.toml | 8 ++ .../ajout/additioneur/src/main.rs | 3 + .../ajout/ajouter-un/Cargo.toml | 8 ++ .../ajout/ajouter-un/src/lib.rs | 7 ++ .../output-only-03-use-rand/ajout/Cargo.lock | 90 +++++++++++++++++++ .../output-only-03-use-rand/ajout/Cargo.toml | 6 ++ .../ajout/additioneur/Cargo.toml | 8 ++ .../ajout/additioneur/src/main.rs | 11 +++ .../ajout/ajouter-un/Cargo.toml | 7 ++ .../ajout/ajouter-un/src/lib.rs | 5 ++ 32 files changed, 357 insertions(+) create mode 100644 FRENCH/listings-sources/ch14-more-about-cargo/output-only-01-adder-crate/add/.gitignore create mode 100644 FRENCH/listings-sources/ch14-more-about-cargo/output-only-01-adder-crate/add/Cargo.lock create mode 100644 FRENCH/listings-sources/ch14-more-about-cargo/output-only-01-adder-crate/add/Cargo.toml create mode 100644 FRENCH/listings-sources/ch14-more-about-cargo/output-only-01-adder-crate/add/rustfmt-ignore create mode 100644 FRENCH/listings-sources/ch14-more-about-cargo/output-only-02-add-one/add/.gitignore create mode 100644 FRENCH/listings-sources/ch14-more-about-cargo/output-only-02-add-one/add/Cargo.lock create mode 100644 FRENCH/listings-sources/ch14-more-about-cargo/output-only-02-add-one/add/Cargo.toml create mode 100644 FRENCH/listings-sources/ch14-more-about-cargo/output-only-02-add-one/add/adder/Cargo.toml create mode 100644 FRENCH/listings-sources/ch14-more-about-cargo/output-only-02-add-one/add/adder/src/main.rs create mode 100644 FRENCH/listings-sources/ch14-more-about-cargo/output-only-03-use-rand/add/Cargo.lock create mode 100644 FRENCH/listings-sources/ch14-more-about-cargo/output-only-03-use-rand/add/Cargo.toml create mode 100644 FRENCH/listings-sources/ch14-more-about-cargo/output-only-03-use-rand/add/add-one/Cargo.toml create mode 100644 FRENCH/listings-sources/ch14-more-about-cargo/output-only-03-use-rand/add/add-one/src/lib.rs create mode 100644 FRENCH/listings-sources/ch14-more-about-cargo/output-only-03-use-rand/add/adder/Cargo.toml create mode 100644 FRENCH/listings-sources/ch14-more-about-cargo/output-only-03-use-rand/add/adder/src/main.rs create mode 100644 FRENCH/listings/ch14-more-about-cargo/output-only-01-adder-crate/ajout/.gitignore create mode 100644 FRENCH/listings/ch14-more-about-cargo/output-only-01-adder-crate/ajout/Cargo.lock create mode 100644 FRENCH/listings/ch14-more-about-cargo/output-only-01-adder-crate/ajout/Cargo.toml create mode 100644 FRENCH/listings/ch14-more-about-cargo/output-only-01-adder-crate/ajout/rustfmt-ignore create mode 100644 FRENCH/listings/ch14-more-about-cargo/output-only-02-add-one/ajout/.gitignore create mode 100644 FRENCH/listings/ch14-more-about-cargo/output-only-02-add-one/ajout/Cargo.lock create mode 100644 FRENCH/listings/ch14-more-about-cargo/output-only-02-add-one/ajout/Cargo.toml create mode 100644 FRENCH/listings/ch14-more-about-cargo/output-only-02-add-one/ajout/additioneur/Cargo.toml create mode 100644 FRENCH/listings/ch14-more-about-cargo/output-only-02-add-one/ajout/additioneur/src/main.rs create mode 100644 FRENCH/listings/ch14-more-about-cargo/output-only-02-add-one/ajout/ajouter-un/Cargo.toml create mode 100644 FRENCH/listings/ch14-more-about-cargo/output-only-02-add-one/ajout/ajouter-un/src/lib.rs create mode 100644 FRENCH/listings/ch14-more-about-cargo/output-only-03-use-rand/ajout/Cargo.lock create mode 100644 FRENCH/listings/ch14-more-about-cargo/output-only-03-use-rand/ajout/Cargo.toml create mode 100644 FRENCH/listings/ch14-more-about-cargo/output-only-03-use-rand/ajout/additioneur/Cargo.toml create mode 100644 FRENCH/listings/ch14-more-about-cargo/output-only-03-use-rand/ajout/additioneur/src/main.rs create mode 100644 FRENCH/listings/ch14-more-about-cargo/output-only-03-use-rand/ajout/ajouter-un/Cargo.toml create mode 100644 FRENCH/listings/ch14-more-about-cargo/output-only-03-use-rand/ajout/ajouter-un/src/lib.rs diff --git a/FRENCH/listings-sources/ch14-more-about-cargo/output-only-01-adder-crate/add/.gitignore b/FRENCH/listings-sources/ch14-more-about-cargo/output-only-01-adder-crate/add/.gitignore new file mode 100644 index 0000000000..b46d5c4644 --- /dev/null +++ b/FRENCH/listings-sources/ch14-more-about-cargo/output-only-01-adder-crate/add/.gitignore @@ -0,0 +1 @@ +adder diff --git a/FRENCH/listings-sources/ch14-more-about-cargo/output-only-01-adder-crate/add/Cargo.lock b/FRENCH/listings-sources/ch14-more-about-cargo/output-only-01-adder-crate/add/Cargo.lock new file mode 100644 index 0000000000..d98623d6e9 --- /dev/null +++ b/FRENCH/listings-sources/ch14-more-about-cargo/output-only-01-adder-crate/add/Cargo.lock @@ -0,0 +1,5 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +[[package]] +name = "adder" +version = "0.1.0" diff --git a/FRENCH/listings-sources/ch14-more-about-cargo/output-only-01-adder-crate/add/Cargo.toml b/FRENCH/listings-sources/ch14-more-about-cargo/output-only-01-adder-crate/add/Cargo.toml new file mode 100644 index 0000000000..c5ea8e510b --- /dev/null +++ b/FRENCH/listings-sources/ch14-more-about-cargo/output-only-01-adder-crate/add/Cargo.toml @@ -0,0 +1,5 @@ +[workspace] + +members = [ + "adder", +] diff --git a/FRENCH/listings-sources/ch14-more-about-cargo/output-only-01-adder-crate/add/rustfmt-ignore b/FRENCH/listings-sources/ch14-more-about-cargo/output-only-01-adder-crate/add/rustfmt-ignore new file mode 100644 index 0000000000..958e568374 --- /dev/null +++ b/FRENCH/listings-sources/ch14-more-about-cargo/output-only-01-adder-crate/add/rustfmt-ignore @@ -0,0 +1,2 @@ +This listing is used for demonstrating how to set up a workspace, but the workspace isn't +completely set up yet, so rustfmt complains the crate mentioned in Cargo.toml doesn't exist yet. diff --git a/FRENCH/listings-sources/ch14-more-about-cargo/output-only-02-add-one/add/.gitignore b/FRENCH/listings-sources/ch14-more-about-cargo/output-only-02-add-one/add/.gitignore new file mode 100644 index 0000000000..64904e06d9 --- /dev/null +++ b/FRENCH/listings-sources/ch14-more-about-cargo/output-only-02-add-one/add/.gitignore @@ -0,0 +1 @@ +add-one diff --git a/FRENCH/listings-sources/ch14-more-about-cargo/output-only-02-add-one/add/Cargo.lock b/FRENCH/listings-sources/ch14-more-about-cargo/output-only-02-add-one/add/Cargo.lock new file mode 100644 index 0000000000..77292f6149 --- /dev/null +++ b/FRENCH/listings-sources/ch14-more-about-cargo/output-only-02-add-one/add/Cargo.lock @@ -0,0 +1,13 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +[[package]] +name = "add-one" +version = "0.1.0" + +[[package]] +name = "adder" +version = "0.1.0" +dependencies = [ + "add-one 0.1.0", +] + diff --git a/FRENCH/listings-sources/ch14-more-about-cargo/output-only-02-add-one/add/Cargo.toml b/FRENCH/listings-sources/ch14-more-about-cargo/output-only-02-add-one/add/Cargo.toml new file mode 100644 index 0000000000..d26e7cfb4d --- /dev/null +++ b/FRENCH/listings-sources/ch14-more-about-cargo/output-only-02-add-one/add/Cargo.toml @@ -0,0 +1,6 @@ +[workspace] + +members = [ + "adder", + "add-one", +] diff --git a/FRENCH/listings-sources/ch14-more-about-cargo/output-only-02-add-one/add/adder/Cargo.toml b/FRENCH/listings-sources/ch14-more-about-cargo/output-only-02-add-one/add/adder/Cargo.toml new file mode 100644 index 0000000000..cae6ba5d2b --- /dev/null +++ b/FRENCH/listings-sources/ch14-more-about-cargo/output-only-02-add-one/add/adder/Cargo.toml @@ -0,0 +1,8 @@ +[package] +name = "adder" +version = "0.1.0" +edition = "2018" + +[dependencies] + +add-one = { path = "../add-one" } diff --git a/FRENCH/listings-sources/ch14-more-about-cargo/output-only-02-add-one/add/adder/src/main.rs b/FRENCH/listings-sources/ch14-more-about-cargo/output-only-02-add-one/add/adder/src/main.rs new file mode 100644 index 0000000000..e7a11a969c --- /dev/null +++ b/FRENCH/listings-sources/ch14-more-about-cargo/output-only-02-add-one/add/adder/src/main.rs @@ -0,0 +1,3 @@ +fn main() { + println!("Hello, world!"); +} diff --git a/FRENCH/listings-sources/ch14-more-about-cargo/output-only-03-use-rand/add/Cargo.lock b/FRENCH/listings-sources/ch14-more-about-cargo/output-only-03-use-rand/add/Cargo.lock new file mode 100644 index 0000000000..28663ec168 --- /dev/null +++ b/FRENCH/listings-sources/ch14-more-about-cargo/output-only-03-use-rand/add/Cargo.lock @@ -0,0 +1,90 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +[[package]] +name = "add-one" +version = "0.1.0" +dependencies = [ + "rand", +] + +[[package]] +name = "adder" +version = "0.1.0" +dependencies = [ + "add-one", +] + +[[package]] +name = "cfg-if" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" + +[[package]] +name = "getrandom" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c9495705279e7140bf035dde1f6e750c162df8b625267cd52cc44e0b156732c8" +dependencies = [ + "cfg-if", + "libc", + "wasi", +] + +[[package]] +name = "libc" +version = "0.2.86" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b7282d924be3275cec7f6756ff4121987bc6481325397dde6ba3e7802b1a8b1c" + +[[package]] +name = "ppv-lite86" +version = "0.2.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac74c624d6b2d21f425f752262f42188365d7b8ff1aff74c82e45136510a4857" + +[[package]] +name = "rand" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ef9e7e66b4468674bfcb0c81af8b7fa0bb154fa9f28eb840da5c447baeb8d7e" +dependencies = [ + "libc", + "rand_chacha", + "rand_core", + "rand_hc", +] + +[[package]] +name = "rand_chacha" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e12735cf05c9e10bf21534da50a147b924d555dc7a547c42e6bb2d5b6017ae0d" +dependencies = [ + "ppv-lite86", + "rand_core", +] + +[[package]] +name = "rand_core" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34cf66eb183df1c5876e2dcf6b13d57340741e8dc255b48e40a26de954d06ae7" +dependencies = [ + "getrandom", +] + +[[package]] +name = "rand_hc" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3190ef7066a446f2e7f42e239d161e905420ccab01eb967c9eb27d21b2322a73" +dependencies = [ + "rand_core", +] + +[[package]] +name = "wasi" +version = "0.10.2+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fd6fbd9a79829dd1ad0cc20627bf1ed606756a7f77edff7b66b7064f9cb327c6" diff --git a/FRENCH/listings-sources/ch14-more-about-cargo/output-only-03-use-rand/add/Cargo.toml b/FRENCH/listings-sources/ch14-more-about-cargo/output-only-03-use-rand/add/Cargo.toml new file mode 100644 index 0000000000..d26e7cfb4d --- /dev/null +++ b/FRENCH/listings-sources/ch14-more-about-cargo/output-only-03-use-rand/add/Cargo.toml @@ -0,0 +1,6 @@ +[workspace] + +members = [ + "adder", + "add-one", +] diff --git a/FRENCH/listings-sources/ch14-more-about-cargo/output-only-03-use-rand/add/add-one/Cargo.toml b/FRENCH/listings-sources/ch14-more-about-cargo/output-only-03-use-rand/add/add-one/Cargo.toml new file mode 100644 index 0000000000..22e2a51240 --- /dev/null +++ b/FRENCH/listings-sources/ch14-more-about-cargo/output-only-03-use-rand/add/add-one/Cargo.toml @@ -0,0 +1,7 @@ +[package] +name = "add-one" +version = "0.1.0" +edition = "2018" + +[dependencies] +rand = "0.8.3" diff --git a/FRENCH/listings-sources/ch14-more-about-cargo/output-only-03-use-rand/add/add-one/src/lib.rs b/FRENCH/listings-sources/ch14-more-about-cargo/output-only-03-use-rand/add/add-one/src/lib.rs new file mode 100644 index 0000000000..7b61b40a40 --- /dev/null +++ b/FRENCH/listings-sources/ch14-more-about-cargo/output-only-03-use-rand/add/add-one/src/lib.rs @@ -0,0 +1,5 @@ +use rand; + +pub fn add_one(x: i32) -> i32 { + x + 1 +} diff --git a/FRENCH/listings-sources/ch14-more-about-cargo/output-only-03-use-rand/add/adder/Cargo.toml b/FRENCH/listings-sources/ch14-more-about-cargo/output-only-03-use-rand/add/adder/Cargo.toml new file mode 100644 index 0000000000..cae6ba5d2b --- /dev/null +++ b/FRENCH/listings-sources/ch14-more-about-cargo/output-only-03-use-rand/add/adder/Cargo.toml @@ -0,0 +1,8 @@ +[package] +name = "adder" +version = "0.1.0" +edition = "2018" + +[dependencies] + +add-one = { path = "../add-one" } diff --git a/FRENCH/listings-sources/ch14-more-about-cargo/output-only-03-use-rand/add/adder/src/main.rs b/FRENCH/listings-sources/ch14-more-about-cargo/output-only-03-use-rand/add/adder/src/main.rs new file mode 100644 index 0000000000..eb4050dc36 --- /dev/null +++ b/FRENCH/listings-sources/ch14-more-about-cargo/output-only-03-use-rand/add/adder/src/main.rs @@ -0,0 +1,11 @@ +use add_one; +use rand; + +fn main() { + let num = 10; + println!( + "Hello, world! {} plus one is {}!", + num, + add_one::add_one(num) + ); +} diff --git a/FRENCH/listings/ch14-more-about-cargo/output-only-01-adder-crate/ajout/.gitignore b/FRENCH/listings/ch14-more-about-cargo/output-only-01-adder-crate/ajout/.gitignore new file mode 100644 index 0000000000..b46d5c4644 --- /dev/null +++ b/FRENCH/listings/ch14-more-about-cargo/output-only-01-adder-crate/ajout/.gitignore @@ -0,0 +1 @@ +adder diff --git a/FRENCH/listings/ch14-more-about-cargo/output-only-01-adder-crate/ajout/Cargo.lock b/FRENCH/listings/ch14-more-about-cargo/output-only-01-adder-crate/ajout/Cargo.lock new file mode 100644 index 0000000000..8a32dd4aaa --- /dev/null +++ b/FRENCH/listings/ch14-more-about-cargo/output-only-01-adder-crate/ajout/Cargo.lock @@ -0,0 +1,5 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +[[package]] +name = "additioneur" +version = "0.1.0" diff --git a/FRENCH/listings/ch14-more-about-cargo/output-only-01-adder-crate/ajout/Cargo.toml b/FRENCH/listings/ch14-more-about-cargo/output-only-01-adder-crate/ajout/Cargo.toml new file mode 100644 index 0000000000..7ed48ce709 --- /dev/null +++ b/FRENCH/listings/ch14-more-about-cargo/output-only-01-adder-crate/ajout/Cargo.toml @@ -0,0 +1,5 @@ +[workspace] + +members = [ + "additioneur", +] diff --git a/FRENCH/listings/ch14-more-about-cargo/output-only-01-adder-crate/ajout/rustfmt-ignore b/FRENCH/listings/ch14-more-about-cargo/output-only-01-adder-crate/ajout/rustfmt-ignore new file mode 100644 index 0000000000..958e568374 --- /dev/null +++ b/FRENCH/listings/ch14-more-about-cargo/output-only-01-adder-crate/ajout/rustfmt-ignore @@ -0,0 +1,2 @@ +This listing is used for demonstrating how to set up a workspace, but the workspace isn't +completely set up yet, so rustfmt complains the crate mentioned in Cargo.toml doesn't exist yet. diff --git a/FRENCH/listings/ch14-more-about-cargo/output-only-02-add-one/ajout/.gitignore b/FRENCH/listings/ch14-more-about-cargo/output-only-02-add-one/ajout/.gitignore new file mode 100644 index 0000000000..64904e06d9 --- /dev/null +++ b/FRENCH/listings/ch14-more-about-cargo/output-only-02-add-one/ajout/.gitignore @@ -0,0 +1 @@ +add-one diff --git a/FRENCH/listings/ch14-more-about-cargo/output-only-02-add-one/ajout/Cargo.lock b/FRENCH/listings/ch14-more-about-cargo/output-only-02-add-one/ajout/Cargo.lock new file mode 100644 index 0000000000..369bedb943 --- /dev/null +++ b/FRENCH/listings/ch14-more-about-cargo/output-only-02-add-one/ajout/Cargo.lock @@ -0,0 +1,13 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +[[package]] +name = "ajouter-un" +version = "0.1.0" + +[[package]] +name = "additioneur" +version = "0.1.0" +dependencies = [ + "add-one 0.1.0", +] + diff --git a/FRENCH/listings/ch14-more-about-cargo/output-only-02-add-one/ajout/Cargo.toml b/FRENCH/listings/ch14-more-about-cargo/output-only-02-add-one/ajout/Cargo.toml new file mode 100644 index 0000000000..5aeba28f14 --- /dev/null +++ b/FRENCH/listings/ch14-more-about-cargo/output-only-02-add-one/ajout/Cargo.toml @@ -0,0 +1,6 @@ +[workspace] + +members = [ + "additioneur", + "ajouter-un", +] diff --git a/FRENCH/listings/ch14-more-about-cargo/output-only-02-add-one/ajout/additioneur/Cargo.toml b/FRENCH/listings/ch14-more-about-cargo/output-only-02-add-one/ajout/additioneur/Cargo.toml new file mode 100644 index 0000000000..4a5dbf3c0d --- /dev/null +++ b/FRENCH/listings/ch14-more-about-cargo/output-only-02-add-one/ajout/additioneur/Cargo.toml @@ -0,0 +1,8 @@ +[package] +name = "additioneur" +version = "0.1.0" +edition = "2018" + +[dependencies] + +add-one = { path = "../ajouter-un" } diff --git a/FRENCH/listings/ch14-more-about-cargo/output-only-02-add-one/ajout/additioneur/src/main.rs b/FRENCH/listings/ch14-more-about-cargo/output-only-02-add-one/ajout/additioneur/src/main.rs new file mode 100644 index 0000000000..e7a11a969c --- /dev/null +++ b/FRENCH/listings/ch14-more-about-cargo/output-only-02-add-one/ajout/additioneur/src/main.rs @@ -0,0 +1,3 @@ +fn main() { + println!("Hello, world!"); +} diff --git a/FRENCH/listings/ch14-more-about-cargo/output-only-02-add-one/ajout/ajouter-un/Cargo.toml b/FRENCH/listings/ch14-more-about-cargo/output-only-02-add-one/ajout/ajouter-un/Cargo.toml new file mode 100644 index 0000000000..e32a19ade1 --- /dev/null +++ b/FRENCH/listings/ch14-more-about-cargo/output-only-02-add-one/ajout/ajouter-un/Cargo.toml @@ -0,0 +1,8 @@ +[package] +name = "ajouter-un" +version = "0.1.0" +edition = "2018" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] diff --git a/FRENCH/listings/ch14-more-about-cargo/output-only-02-add-one/ajout/ajouter-un/src/lib.rs b/FRENCH/listings/ch14-more-about-cargo/output-only-02-add-one/ajout/ajouter-un/src/lib.rs new file mode 100644 index 0000000000..31e1bb209f --- /dev/null +++ b/FRENCH/listings/ch14-more-about-cargo/output-only-02-add-one/ajout/ajouter-un/src/lib.rs @@ -0,0 +1,7 @@ +#[cfg(test)] +mod tests { + #[test] + fn it_works() { + assert_eq!(2 + 2, 4); + } +} diff --git a/FRENCH/listings/ch14-more-about-cargo/output-only-03-use-rand/ajout/Cargo.lock b/FRENCH/listings/ch14-more-about-cargo/output-only-03-use-rand/ajout/Cargo.lock new file mode 100644 index 0000000000..8e7587f4b6 --- /dev/null +++ b/FRENCH/listings/ch14-more-about-cargo/output-only-03-use-rand/ajout/Cargo.lock @@ -0,0 +1,90 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +[[package]] +name = "ajouter-un" +version = "0.1.0" +dependencies = [ + "rand", +] + +[[package]] +name = "additioneur" +version = "0.1.0" +dependencies = [ + "ajouter-un", +] + +[[package]] +name = "cfg-if" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" + +[[package]] +name = "getrandom" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c9495705279e7140bf035dde1f6e750c162df8b625267cd52cc44e0b156732c8" +dependencies = [ + "cfg-if", + "libc", + "wasi", +] + +[[package]] +name = "libc" +version = "0.2.86" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b7282d924be3275cec7f6756ff4121987bc6481325397dde6ba3e7802b1a8b1c" + +[[package]] +name = "ppv-lite86" +version = "0.2.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac74c624d6b2d21f425f752262f42188365d7b8ff1aff74c82e45136510a4857" + +[[package]] +name = "rand" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ef9e7e66b4468674bfcb0c81af8b7fa0bb154fa9f28eb840da5c447baeb8d7e" +dependencies = [ + "libc", + "rand_chacha", + "rand_core", + "rand_hc", +] + +[[package]] +name = "rand_chacha" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e12735cf05c9e10bf21534da50a147b924d555dc7a547c42e6bb2d5b6017ae0d" +dependencies = [ + "ppv-lite86", + "rand_core", +] + +[[package]] +name = "rand_core" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34cf66eb183df1c5876e2dcf6b13d57340741e8dc255b48e40a26de954d06ae7" +dependencies = [ + "getrandom", +] + +[[package]] +name = "rand_hc" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3190ef7066a446f2e7f42e239d161e905420ccab01eb967c9eb27d21b2322a73" +dependencies = [ + "rand_core", +] + +[[package]] +name = "wasi" +version = "0.10.2+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fd6fbd9a79829dd1ad0cc20627bf1ed606756a7f77edff7b66b7064f9cb327c6" diff --git a/FRENCH/listings/ch14-more-about-cargo/output-only-03-use-rand/ajout/Cargo.toml b/FRENCH/listings/ch14-more-about-cargo/output-only-03-use-rand/ajout/Cargo.toml new file mode 100644 index 0000000000..5aeba28f14 --- /dev/null +++ b/FRENCH/listings/ch14-more-about-cargo/output-only-03-use-rand/ajout/Cargo.toml @@ -0,0 +1,6 @@ +[workspace] + +members = [ + "additioneur", + "ajouter-un", +] diff --git a/FRENCH/listings/ch14-more-about-cargo/output-only-03-use-rand/ajout/additioneur/Cargo.toml b/FRENCH/listings/ch14-more-about-cargo/output-only-03-use-rand/ajout/additioneur/Cargo.toml new file mode 100644 index 0000000000..4a5dbf3c0d --- /dev/null +++ b/FRENCH/listings/ch14-more-about-cargo/output-only-03-use-rand/ajout/additioneur/Cargo.toml @@ -0,0 +1,8 @@ +[package] +name = "additioneur" +version = "0.1.0" +edition = "2018" + +[dependencies] + +add-one = { path = "../ajouter-un" } diff --git a/FRENCH/listings/ch14-more-about-cargo/output-only-03-use-rand/ajout/additioneur/src/main.rs b/FRENCH/listings/ch14-more-about-cargo/output-only-03-use-rand/ajout/additioneur/src/main.rs new file mode 100644 index 0000000000..f4ac53eb40 --- /dev/null +++ b/FRENCH/listings/ch14-more-about-cargo/output-only-03-use-rand/ajout/additioneur/src/main.rs @@ -0,0 +1,11 @@ +use ajouter_un; +use rand; + +fn main() { + let nombre = 10; + println!( + "Hello, world ! {} plus un vaut {} !", + nombre, + ajouter_un::ajouter_un(nombre) + ); +} diff --git a/FRENCH/listings/ch14-more-about-cargo/output-only-03-use-rand/ajout/ajouter-un/Cargo.toml b/FRENCH/listings/ch14-more-about-cargo/output-only-03-use-rand/ajout/ajouter-un/Cargo.toml new file mode 100644 index 0000000000..2effd773e7 --- /dev/null +++ b/FRENCH/listings/ch14-more-about-cargo/output-only-03-use-rand/ajout/ajouter-un/Cargo.toml @@ -0,0 +1,7 @@ +[package] +name = "ajouter-un" +version = "0.1.0" +edition = "2018" + +[dependencies] +rand = "0.8.3" diff --git a/FRENCH/listings/ch14-more-about-cargo/output-only-03-use-rand/ajout/ajouter-un/src/lib.rs b/FRENCH/listings/ch14-more-about-cargo/output-only-03-use-rand/ajout/ajouter-un/src/lib.rs new file mode 100644 index 0000000000..78792d8b2d --- /dev/null +++ b/FRENCH/listings/ch14-more-about-cargo/output-only-03-use-rand/ajout/ajouter-un/src/lib.rs @@ -0,0 +1,5 @@ +use rand; + +pub fn ajouter_un(x: i32) -> i32 { + x + 1 +} From f2931d401f9b97a9e5a1e977db5e63087f09d646 Mon Sep 17 00:00:00 2001 From: Jimskapt Date: Mon, 15 Nov 2021 20:43:47 +0100 Subject: [PATCH 42/64] =?UTF-8?q?=F0=9F=A9=B9=20Apply=20@florian-samiez=20?= =?UTF-8?q?suggestion=20in=20#188=20(ch15-01)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- FRENCH/src/ch15-01-box.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/FRENCH/src/ch15-01-box.md b/FRENCH/src/ch15-01-box.md index f7f59e4e5f..e86e9ce6b0 100644 --- a/FRENCH/src/ch15-01-box.md +++ b/FRENCH/src/ch15-01-box.md @@ -429,11 +429,11 @@ store the largest of its variants. Pour déterminer combien d'espace allouer pour une valeur `Message`, Rust parcourt chaque variante pour voir quelle variante a besoin le plus d'espace. -Rust voit que `Message::Quit` n'a pas besoin d'espace, `Message::Move` a besoin -de suffisamment d'espace pour stocker deux valeurs `i32`, et ainsi de suite. -Comme une seule variante sera utilisée, le plus grand espace dont une valeur -de `Message` aura besoin sera l'espace que cela prendra de stocker la plus -grosse de ses variantes. +Rust voit que `Message::Quitter` n'a pas besoin d'espace, `Message::Deplacer` a +besoin de suffisamment d'espace pour stocker deux valeurs `i32`, et ainsi de +suite. Comme une seule variante sera utilisée, le plus grand espace dont une +valeur de `Message` aura besoin sera l'espace que cela prendra de stocker la +plus grosse de ses variantes. -> Remarque : les traits sont similaires à ce qu'on appelle parfois les +> Remarque : les traits sont similaires à ce qu'on appelle parfois les > *interfaces* dans d'autres langages, malgré quelques différences. Par exemple, imaginons que nous avons plusieurs structures qui stockent -différents types et quantité de texte : une structure `ArticleDePresse`, qui +différents types et quantités de texte : une structure `ArticleDePresse`, qui contient un reportage dans un endroit donné et un `Tweet` qui peut avoir jusqu'à 280 caractères maximum et des métadonnées qui indiquent si cela est un nouveau tweet, un retweet, ou une réponse à un autre tweet. @@ -68,10 +68,10 @@ need a summary from each type, and we need to request that summary by calling a Nous voulons construire une bibliothèque pour des agrégateurs de médias qui peut afficher le résumé des données stockées dans une instance de `ArticleDePresse` -ou de `Tweet`. Pour cela, nous avons besoin d'un résumé pour chaque type, et -nous pouvons demander ce résumé en appelant la méthode `resumer` sur une -instance. L'encart 10-12 nous montre la définition d'un trait `Resumable` qui -décrit ce comportement. +ou de `Tweet`. Pour cela, il nous faut un résumé pour chaque type, et nous +pouvons demander ce résumé en appelant la méthode `resumer` sur une instance. +L'encart 10-12 nous montre la définition d'un trait `Resumable` qui décrit ce +comportement. -Pour pouvoir utiliser l'implémentation par défaut du résumé des instances de -`ArticleDePresse` plutôt que de devoir préciser un implémentation personnalisée, -nous précisons un bloc `impl` vide avec `impl Resumable for ArticleDePresse {}`. +Pour utiliser l'implémentation par défaut pour résumer des instances de +`ArticleDePresse` au lieu de préciser une implémentation personnalisée, nous +précisons un bloc `impl` vide avec `impl Resumable for ArticleDePresse {}`. -Même si nous n'avons pas défini directement la méthode `resumer` sur +Même si nous ne définissons plus directement la méthode `resumer` sur `ArticleDePresse`, nous avons fourni une implémentation par défaut et précisé que `ArticleDePresse` implémente le trait `Resumable`. Par conséquent, nous pouvons toujours appeler la méthode `resumer` sur une instance de @@ -398,7 +398,7 @@ implementation. --> La création d'une implémentation par défaut pour `resumer` n'a pas besoin que -nous modifions quelque chose dans l'implémentation de `Resumable` sur `Tweet` +nous modifiions quelque chose dans l'implémentation de `Resumable` sur `Tweet` dans l'encart 10-13. C'est parce que la syntaxe pour réécrire l'implémentation par défaut est la même que la syntaxe pour implémenter une méthode qui n'a pas d'implémentation par défaut. @@ -415,9 +415,9 @@ a small part of it. For example, we could define the `Summary` trait to have a Les implémentations par défaut peuvent appeler d'autres méthodes du même trait, même si ces autres méthodes n'ont pas d'implémentation par défaut. Ainsi, un -trait peut fournir de nombreuses fonctionnalités utiles et n'avoir besoin que -le développeur qui l'utilise n'en ai qu'une petite partie à implémenter. Par -exemple, nous pouvons définir le trait `Resumable` pour avoir une méthode +trait peut fournir de nombreuses fonctionnalités utiles et n'exiger du +développeur qui l'utilise que d'en implémenter une petite partie. Par exemple, +nous pouvons définir le trait `Resumable` comme ayant une méthode `resumer_auteur` dont l'implémentation est nécessaire, et ensuite définir une méthode `resumer` qui a une implémentation par défaut qui appelle la méthode `resumer_auteur` : @@ -462,8 +462,7 @@ Après avoir défini `resumer_auteur`, nous pouvons appeler `resumer` sur des instances de la structure `Tweet`, et l'implémentation par défaut de `resumer` va appeler `resumer_auteur`, que nous avons défini. Comme nous avons implémenté `resumer_auteur`, le trait `Resumable` nous a donné le comportement de la -méthode `resumer` sans avoir besoin d'écrire aucune ligne de code -supplémentaire. +méthode `resumer` sans nous obliger à écrire une ligne de code supplémentaire. -Par exemple, dans l'encart 10-13, nous implémentons le trait `Resumable` sur les -types `ArticleDePresse` et `Tweet`. Nous pouvons définir une fonction `notifier` -qui va appeler la fonction `resumer` sur son paramètre `element`, qui est d'un -type qui implémente le trait `Resumable`. Pour faire ceci, nous pouvons utiliser -la syntaxe `impl Trait`, comme ceci : +Par exemple, dans l'encart 10-13, nous avons implémenté le trait `Resumable` +sur les types `ArticleDePresse` et `Tweet`. Nous pouvons définir une fonction +`notifier` qui va appeler la méthode `resumer` sur son paramètre `element`, qui +est d'un type qui implémente le trait `Resumable`. Pour faire ceci, nous +pouvons utiliser la syntaxe `impl Trait`, comme ceci : Si nous souhaitons permettre à `element1` et `element2` d'avoir des types -différents, l'utilisation de `impl Trait` est approprié (du moment que chacun de -ces types implémentent `Resumable`). Mais si nous souhaitons forcer les deux -paramètres d'être du même type, cela n'est possible à exprimer qu'avec un trait +différents, l'utilisation de `impl Trait` est appropriée (du moment que chacun +de ces types implémentent `Resumable`). Mais si nous souhaitons forcer les deux +paramètres à être du même type, cela n'est possible à exprimer qu'avec un trait lié, comme ceci : -#### Des traits liés plus clairs avec l'instruction `where` +#### Des traits liés plus clairs avec la clause `where` L'utilisation de trop nombreux traits liés a aussi ses désavantages. Chaque -générique a ses propres traits liés, donc les fonctions avec plusieurs -paramètres de types génériques peuvent aussi avoir de nombreuses informations de +type générique a ses propres traits liés, donc les fonctions avec plusieurs +paramètres de type génériques peuvent aussi avoir de nombreuses informations de traits liés entre le nom de la fonction et la liste de ses paramètres, ce qui rend la signature de la fonction difficile à lire. Pour cette raison, Rust a une -syntaxe alternative pour renseigner les traits liés, dans une instruction -`where` après la signature de la fonction. Donc, à la place d'écrire ceci ... +syntaxe alternative pour renseigner les traits liés, dans une clause `where` +après la signature de la fonction. Donc, au lieu d'écrire ceci ... ```rust,ignore -fn some_function(t: &T, u: &U) -> i32 { +fn une_fonction(t: &T, u: &U) -> i32 { ``` -... nous pouvons utiliser l'instruction `where`, comme ceci : +... nous pouvons utiliser la clause `where`, comme ceci : ```rust,ignore -fn some_function(t: &T, u: &U) -> i32 +fn une_fonction(t: &T, u: &U) -> i32 where T: Display + Clone, U: Clone + Debug { @@ -757,7 +756,7 @@ bounds. --> La signature de cette fonction est moins encombrée : le nom de la fonction, la -liste des paramètres, et le type de retour sont plus proches l'un de l'autre, +liste des paramètres et le type de retour sont plus proches les uns des autres, comme une fonction sans traits liés. -Nous pouvons aussi utiliser la syntaxe `impl Trait` à la place du type de retour afin -de retourner une valeur d'un type qui implémente un trait, comme ci-dessous : +Nous pouvons aussi utiliser la syntaxe `impl Trait` à la place du type de +retour afin de retourner une valeur d'un type qui implémente un trait, comme +ci-dessous : En utilisant `impl Resumable` pour le type de retour, nous indiquons que la -fonction `retourne_resumable`retourne un type qui implémente le trait +fonction `retourne_resumable` retourne un type qui implémente le trait `Resumable` sans avoir à écrire le nom du type concret. Dans notre cas, `retourne_resumable` retourne un `Tweet`, mais le code qui appellera cette fonction ne le saura pas. @@ -808,7 +808,7 @@ concisely specify that a function returns some type that implements the La capacité de retourner un type qui est uniquement caractérisé par le trait qu'il implémente est tout particulièrement utile dans le cas des fermetures et -des itérateurs, que nous allons voir au chapitre 13. Les fermetures et les +des itérateurs, que nous verrons au chapitre 13. Les fermetures et les itérateurs créent des types que seul le compilateur est en mesure de comprendre ou alors des types qui sont très longs à définir. La syntaxe `impl Trait` vous permet de renseigner de manière concise qu'une fonction retourne un type @@ -822,9 +822,9 @@ return type specified as `impl Summary` wouldn’t work: --> Cependant, vous pouvez seulement utiliser `impl Trait` si vous retournez un -seul type possible. Par exemple, ce code va retourner soit un `ArticleDePresse`, -soit un `Tweet`, alors que le type de retour avec `impl Resumable` ne va pas -fonctionner : +seul type possible. Par exemple, ce code va retourner soit un +`ArticleDePresse`, soit un `Tweet`, alors que le type de retour avec +`impl Resumable` ne va pas fonctionner : Retourner soit un `ArticleDePresse`, soit un `Tweet` n'est pas autorisé à cause -des restrictions sur comment la syntaxe `impl Trait` est implémentée dans le -compilateur. Nous allons voir comment écrire une fonction avec ce comportement +des restrictions sur la façon dont la syntaxe `impl Trait` est implémentée dans +le compilateur. Nous verrons comment écrire une fonction avec ce comportement dans une section du [chapitre 17][using-trait-objects-that-allow-for-values-of-different-types]. @@ -856,7 +856,7 @@ ignore -->. ### Fixing the `largest` Function with Trait Bounds --> -### Résoudre la fonction `le_plus_grand` avec les traits liés +### Corriger la fonction `le_plus_grand` avec les traits liés Maintenant que vous savez comment renseigner le comportement que vous souhaitez -utiliser en utilisant les paramètres de types génériques liés, retournons à -l'encart 10-5 pour résoudre la définition de la fonction `le_plus_grand` qui -utilise un paramètre de type générique ! La dernière fois qu'on a essayé de -lancer ce code, nous avions l'erreur suivante : +utiliser en utilisant les traits liés des paramètres de type génériques, +retournons à l'encart 10-5 pour corriger la définition de la fonction +`le_plus_grand` qui utilise un paramètre de type générique ! La dernière fois +que nous avons essayé de lancer ce code, nous avions l'erreur suivante : -Dans le corps de `le_plus_grand` nous voulions comparer les deux valeurs du +Dans le corps de `le_plus_grand`, nous voulions comparer les deux valeurs du type `T` en utilisant l'opérateur *plus grand que* (`>`). Comme cet opérateur est défini comme une méthode par défaut dans le trait de la bibliothèque standard `std::cmp::PartialOrd`, nous devons préciser `PartialOrd` dans les -traits liés pour `T` afin que la fonction `le_plus_grand` puisse fonctionner sur -les slices de n'importe quel type que nous pouvons comparer. Nous n'avons pas -besoin d'importer `PartialOrd` dans la portée car il est importé dans l'étape -préliminaire. Changez la signature de `le_plus_grand` par quelque chose comme -ceci : +traits liés pour `T` afin que la fonction `le_plus_grand` puisse fonctionner +sur les slices de n'importe quel type que nous pouvons comparer. Nous n'avons +pas besoin d'importer `PartialOrd` dans la portée car il est importé dans +l'étape préliminaire. Changez la signature de `le_plus_grand` par quelque chose +comme ceci : L'élement-clé dans ces erreurs est `cannot move out of type [T], a non-copy -slice`. Avec notre version non générique de la fonction `le_plus_grand`, nous +slice` (*impossible de déplacer une valeur hors du type `[T]`, slice non +`Copy`*). Avec notre version non générique de la fonction `le_plus_grand`, nous avions essayé de trouver le plus grand `i32` ou `char`. Comme nous l'avons vu -dans la section -[“Données uniquement sur la pile : la copie”][stack-only-data-copy] du chapitre 4, les types comme `i32` et `char` ont une taille connue -et peuvent être stockés sur la pile, donc ils implémentent le trait `Copy`. Par -conséquent, nous ne pouvons pas forcément déplacer la valeur de `list[0]` dans -notre variable `le_plus_grand`, ce qui engendre cette erreur. +dans la section [“Données uniquement sur la pile : la +copie”][stack-only-data-copy] du chapitre 4, les types comme +`i32` et `char` ont une taille connue et peuvent être stockés sur la pile, donc +ils implémentent le trait `Copy`. Mais quand nous avons rendu générique la +fonction `le_plus_grand`, il est devenu possible que le paramètre `liste` +contienne des types qui n'implémentent pas le trait `Copy`. Par conséquent, +nous ne pouvons pas forcément déplacer la valeur de `list[0]` dans notre +variable `le_plus_grand`, ce qui engendre cette erreur. En utilisant un trait lié avec un bloc `impl` qui utilise les paramètres de type -générique, nous pouvons implémenter des méthodes en fonction des types -qu'implémentent des traits particuliers. Par exemple, le type `Pair` de -l'encart 10-16 implémente toujours la fonction `new`. Mais `Pair` implémente -la méthode `affiche_comparaison` uniquement si son type interne `T` +génériques, nous pouvons implémenter des méthodes en fonction des types qui +implémentent des traits particuliers. Par exemple, le type `Paire` de +l'encart 10-16 implémente toujours la fonction `new`. Mais `Paire` +implémente la méthode `afficher_comparaison` uniquement si son type interne `T` implémente le trait `PartialOrd` qui active la comparaison *et* le trait `Display` qui permet l'affichage. @@ -1078,7 +1081,7 @@ generic type depending on trait bounds --> Encart 10-16 : implémentation de méthodes sur un type -générique en fonction du trait lié +générique en fonction des traits liés -Nous pouvons également appliquer un trait sur un type qui applique un autre -trait. L'implémentation d'un trait sur n'importe quel type qui a un trait lié -est appelée *implémentation générale* et est largement utilisée dans la -bibliothèque standard Rust. Par exemple, la bibliothèque standard implémente le -trait `ToString` sur tous les types qui implémentent le trait `Display`. Le bloc -`impl` de la bibliothèque standard ressemble au code suivant : +Nous pouvons également implémenter un trait sur tout type qui implémente un +autre trait en particulier. L'implémentation d'un trait sur n'importe quel type +qui a un trait lié est appelée *implémentation générale* et est largement +utilisée dans la bibliothèque standard Rust. Par exemple, la bibliothèque +standard implémente le trait `ToString` sur tous les types qui implémentent le +trait `Display`. Le bloc `impl` de la bibliothèque standard ressemble au code +suivant : Les traits et les traits liés nous permettent d'écrire du code qui utilise des -paramètres de type générique pour réduire la duplication de code, mais aussi +paramètres de type génériques pour réduire la duplication de code, mais aussi pour indiquer au compilateur que nous voulons que le type générique ait un comportement particulier. Le compilateur peut ensuite utiliser les informations liées aux traits pour vérifier que tous les types concrets utilisés dans notre code suivent le comportement souhaité. Dans les langages typés dynamiquement, -nous aurons une erreur à l'exécution si nous appelions une méthode sur un type +nous aurions une erreur à l'exécution si nous appelions une méthode sur un type qui n'implémentait pas la méthode. Mais Rust décale l'apparition de ces erreurs au moment de la compilation afin de nous forcer à résoudre les problèmes avant même que notre code soit capable de s'exécuter. De plus, nous n'avons pas besoin d'écrire un code qui vérifie le comportement lors de l'exécution car nous l'avons déjà vérifié au moment de la compilation. Cela permet d'améliorer les -performances sans avoir à sacrifier la flexibilité des génériques. +performances sans avoir à sacrifier la flexibilité des types génériques. -Un autre type de générique que nous avons déjà utilisé est la *durée de vie*. -Plutôt que de s'assurer qu'un type a le comportement que nous voulons, la durée -de vie s'assure que les références sont en vigueur aussi longtemps que nous -avons besoin qu'elles le soient. Nous allons voir à la page suivante comment la -durée de vie fait cela. +Une autre sorte de générique que nous avons déjà utilisée est la *durée de +vie*. Plutôt que de s'assurer qu'un type a le comportement que nous voulons, la +durée de vie s'assure que les références sont en vigueur aussi longtemps que +nous avons besoin qu'elles le soient. Nous allons voir à la page suivante +comment la durée de vie fait cela. src/main.rs:9:36 | 5 | let compteur = Mutex::new(0); - | -------- move occurs because `compteur` has type `std::sync::Mutex`, which does not implement the `Copy` trait + | -------- move occurs because `compteur` has type `Mutex`, which does not implement the `Copy` trait ... 9 | let manipulateur = thread::spawn(move || { | ^^^^^^^ value moved into closure here, in previous iteration of loop 10 | let mut nombre = compteur.lock().unwrap(); | -------- use occurs due to use in closure -error: aborting due to previous error - For more information about this error, try `rustc --explain E0382`. -error: could not compile `shared-state`. - -To learn more, run the command again with --verbose. +error: could not compile `shared-state` due to previous error \ No newline at end of file diff --git a/FRENCH/listings/ch16-fearless-concurrency/listing-16-14/Cargo.toml b/FRENCH/listings/ch16-fearless-concurrency/listing-16-14/Cargo.toml index e7c75ac918..eaaec49577 100644 --- a/FRENCH/listings/ch16-fearless-concurrency/listing-16-14/Cargo.toml +++ b/FRENCH/listings/ch16-fearless-concurrency/listing-16-14/Cargo.toml @@ -1,7 +1,6 @@ [package] name = "shared-state" version = "0.1.0" -authors = ["Your Name "] edition = "2018" [dependencies] diff --git a/FRENCH/listings/ch16-fearless-concurrency/listing-16-14/output.txt b/FRENCH/listings/ch16-fearless-concurrency/listing-16-14/output.txt index e356fbe1e3..efccfcbb5e 100644 --- a/FRENCH/listings/ch16-fearless-concurrency/listing-16-14/output.txt +++ b/FRENCH/listings/ch16-fearless-concurrency/listing-16-14/output.txt @@ -1,17 +1,20 @@ $ cargo run Compiling shared-state v0.1.0 (file:///projects/shared-state) -error[E0277]: `std::rc::Rc>` cannot be sent between threads safely +error[E0277]: `Rc>` cannot be sent between threads safely --> src/main.rs:11:22 | -11 | let manipulateur = thread::spawn(move || { - | ^^^^^^^^^^^^^ `std::rc::Rc>` cannot be sent between threads safely +11 | let manipulateur = thread::spawn(move || { + | ____________________________^^^^^^^^^^^^^_- + | | | + | | `Rc>` cannot be sent between threads safely +12 | | let mut nombre = compteur.lock().unwrap(); +13 | | +14 | | *nombre += 1; +15 | | }); + | |_________- within this `[closure@src/main.rs:11:36: 15:10]` | - = help: within `[closure@src/main.rs:11:36: 15:10 counter:std::rc::Rc>]`, the trait `std::marker::Send` is not implemented for `std::rc::Rc>` - = note: required because it appears within the type `[closure@src/main.rs:11:36: 15:10 counter:std::rc::Rc>]` - -error: aborting due to previous error + = help: within `[closure@src/main.rs:11:36: 15:10]`, the trait `Send` is not implemented for `Rc>` + = note: required because it appears within the type `[closure@src/main.rs:11:36: 15:10]` For more information about this error, try `rustc --explain E0277`. -error: could not compile `shared-state`. - -To learn more, run the command again with --verbose. +error: could not compile `shared-state` due to previous error \ No newline at end of file diff --git a/FRENCH/listings/ch16-fearless-concurrency/listing-16-15/Cargo.toml b/FRENCH/listings/ch16-fearless-concurrency/listing-16-15/Cargo.toml index e7c75ac918..eaaec49577 100644 --- a/FRENCH/listings/ch16-fearless-concurrency/listing-16-15/Cargo.toml +++ b/FRENCH/listings/ch16-fearless-concurrency/listing-16-15/Cargo.toml @@ -1,7 +1,6 @@ [package] name = "shared-state" version = "0.1.0" -authors = ["Your Name "] edition = "2018" [dependencies] diff --git a/FRENCH/src/ch16-03-shared-state.md b/FRENCH/src/ch16-03-shared-state.md index 73c7bcb088..7d889d136d 100644 --- a/FRENCH/src/ch16-03-shared-state.md +++ b/FRENCH/src/ch16-03-shared-state.md @@ -345,18 +345,14 @@ propriétaires que nous avons vu au chapitre 15. In Chapter 15, we gave a value multiple owners by using the smart pointer `Rc` to create a reference counted value. Let’s do the same here and see what happens. We’ll wrap the `Mutex` in `Rc` in Listing 16-14 and clone -the `Rc` before moving ownership to the thread. Now that we’ve seen the -errors, we’ll also switch back to using the `for` loop, and we’ll keep the -`move` keyword with the closure. +the `Rc` before moving ownership to the thread. --> Dans le chapitre 15, nous avons assigné plusieurs propriétaires à une valeur en utilisant le pointeur intelligent `Rc` pour créer un compteur de référence. Faisons la même chose ici et voyons ce qui se passe. Nous allons intégrer le `Mutex` dans un `Rc` dans l'encart 16-14 et cloner le `Rc` -avant de déplacer sa possession à la tâche. Maintenant que nous avons vu les -erreurs, nous allons aussi revenir à l'utilisation de la boucle `for` et nous -allons garder le mot-clé `move` dans la fermeture. +avant de déplacer sa possession à la tâche. -Le trait `Send` indique que la possession du type qui implémente `Send` peut -être transféré entre plusieurs tâches. Presque tous les types de Rust -implémentent `Send`, mais il subsiste quelques exceptions, comme `Rc` : il -ne peut pas implémenter `Send` car si vous clonez une valeur `Rc` et que +Le trait `Send` indique que la possession des valeurs du type qui implémente +`Send` peut être transféré entre plusieurs tâches. Presque tous les types de +Rust implémentent `Send`, mais il subsiste quelques exceptions, comme `Rc` : +il ne peut pas implémenter `Send` car si vous clonez une valeur `Rc` et que vous essayez de transférer la possession de ce clone à une autre tâche, les deux tâches peuvent modifier le compteur de référence en même temps. Pour cette raison, `Rc` est prévu pour une utilisation dans des situations qui @@ -89,18 +89,18 @@ chapitre 19. Le trait `Sync` indique qu'il est sûr d'avoir une référence dans plusieurs tâches vers le type qui implémente `Sync`. Autrement dit, n'importe quel type -`T` implémente `Sync` si `&T` (une référence vers `T`) implémente `Send`, ce -qui signifie que la référence peut être envoyée en toute sécurité à une autre -tâche. De la même manière que `Send`, les types primitifs implémentent `Sync`, -et les types composés entièrement d'autres types qui implémentent `Sync` sont -eux-mêmes `Sync`. +`T` implémente `Sync` si `&T` (une référence immuable vers `T`) implémente +`Send`, ce qui signifie que la référence peut être envoyée en toute sécurité à +une autre tâche. De la même manière que `Send`, les types primitifs +implémentent `Sync`, et les types composés entièrement d'autres types qui +implémentent `Sync` sont eux-mêmes `Sync`. Le livre *Design Patterns: Elements of Reusable Object-Oriented Software* d'Erich Gamma, Richard Helm, Ralph Johnson, et John Vlissides (Addison-Wesley -Professional, 1994) que l'on surnomme le livre du *Gang of Four*, est un +Professional, 1994), que l'on surnomme le livre du *Gang of Four*, est un catalogue de patrons de conception orientés objet. Il définit la POO ainsi : -```rust -pub struct CollectionMoyennee { - liste: Vec, - moyenne: f64, -} +```rust,noplayground +{{#rustdoc_include ../listings/ch17-oop/listing-17-01/src/lib.rs}} ``` -```rust -# pub struct CollectionMoyennee { -# liste: Vec, -# moyenne: f64, -# } -impl CollectionMoyennee { - pub fn ajouter(&mut self, valeur: i32) { - self.liste.push(valeur); - self.mettre_a_jour_moyenne(); - } - - pub fn retirer(&mut self) -> Option { - let resultat = self.liste.pop(); - match resultat { - Some(valeur) => { - self.mettre_a_jour_moyenne(); - Some(valeur) - }, - None => None, - } - } - - pub fn moyenne(&self) -> f64 { - self.moyenne - } - - fn mettre_a_jour_moyenne(&mut self) { - let total: i32 = self.liste.iter().sum(); - self.moyenne = total as f64 / self.liste.len() as f64; - } -} +```rust,noplayground +{{#rustdoc_include ../listings/ch17-oop/listing-17-02/src/lib.rs:here}} ``` src/main.rs:5:26 + | +5 | composants: vec![Box::new(String::from("Salutations"))], + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait `Affichable` is not implemented for `String` + | + = note: required for the cast to the object type `dyn Affichable` + +For more information about this error, try `rustc --explain E0277`. +error: could not compile `gui` due to previous error diff --git a/FRENCH/listings/ch17-oop/listing-17-10/src/lib.rs b/FRENCH/listings/ch17-oop/listing-17-10/src/lib.rs new file mode 100644 index 0000000000..2a9f702e18 --- /dev/null +++ b/FRENCH/listings/ch17-oop/listing-17-10/src/lib.rs @@ -0,0 +1,27 @@ +pub trait Affichable { + fn afficher(&self); +} + +pub struct Ecran { + pub composants: Vec>, +} + +impl Ecran { + pub fn run(&self) { + for composant in self.composants.iter() { + composant.afficher(); + } + } +} + +pub struct Bouton { + pub largeur: u32, + pub hauteur: u32, + pub libelle: String, +} + +impl Affichable for Bouton { + fn afficher(&self) { + // code servant vraiment à afficher un bouton + } +} diff --git a/FRENCH/listings/ch17-oop/listing-17-10/src/main.rs b/FRENCH/listings/ch17-oop/listing-17-10/src/main.rs new file mode 100644 index 0000000000..79d1c972c3 --- /dev/null +++ b/FRENCH/listings/ch17-oop/listing-17-10/src/main.rs @@ -0,0 +1,9 @@ +use gui::Ecran; + +fn main() { + let ecran = Ecran { + composants: vec![Box::new(String::from("Salutations"))], + }; + + ecran.run(); +} diff --git a/FRENCH/listings/ch17-oop/no-listing-01-trait-object-of-clone/Cargo.lock b/FRENCH/listings/ch17-oop/no-listing-01-trait-object-of-clone/Cargo.lock new file mode 100644 index 0000000000..00d7b21826 --- /dev/null +++ b/FRENCH/listings/ch17-oop/no-listing-01-trait-object-of-clone/Cargo.lock @@ -0,0 +1,6 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +[[package]] +name = "gui" +version = "0.1.0" + diff --git a/FRENCH/listings/ch17-oop/no-listing-01-trait-object-of-clone/Cargo.toml b/FRENCH/listings/ch17-oop/no-listing-01-trait-object-of-clone/Cargo.toml new file mode 100644 index 0000000000..06f8902623 --- /dev/null +++ b/FRENCH/listings/ch17-oop/no-listing-01-trait-object-of-clone/Cargo.toml @@ -0,0 +1,6 @@ +[package] +name = "gui" +version = "0.1.0" +edition = "2018" + +[dependencies] diff --git a/FRENCH/listings/ch17-oop/no-listing-01-trait-object-of-clone/output.txt b/FRENCH/listings/ch17-oop/no-listing-01-trait-object-of-clone/output.txt new file mode 100644 index 0000000000..0ec0bbd5f4 --- /dev/null +++ b/FRENCH/listings/ch17-oop/no-listing-01-trait-object-of-clone/output.txt @@ -0,0 +1,13 @@ +$ cargo build + Compiling gui v0.1.0 (file:///projects/gui) +error[E0038]: the trait `Clone` cannot be made into an object + --> src/lib.rs:2:29 + | +2 | pub composants: Vec>, + | ^^^^^^^^^ `Clone` cannot be made into an object + | + = note: the trait cannot be made into an object because it requires `Self: Sized` + = note: for a trait to be "object safe" it needs to allow building a vtable to allow the call to be resolvable dynamically; for more information visit + +For more information about this error, try `rustc --explain E0038`. +error: could not compile `gui` due to previous error diff --git a/FRENCH/listings/ch17-oop/no-listing-01-trait-object-of-clone/src/lib.rs b/FRENCH/listings/ch17-oop/no-listing-01-trait-object-of-clone/src/lib.rs new file mode 100644 index 0000000000..330dfa8d7d --- /dev/null +++ b/FRENCH/listings/ch17-oop/no-listing-01-trait-object-of-clone/src/lib.rs @@ -0,0 +1,3 @@ +pub struct Ecran { + pub composants: Vec>, +} diff --git a/FRENCH/src/ch17-02-trait-objects.md b/FRENCH/src/ch17-02-trait-objects.md index 271bdd8a28..0ff0c80aa2 100644 --- a/FRENCH/src/ch17-02-trait-objects.md +++ b/FRENCH/src/ch17-02-trait-objects.md @@ -85,10 +85,11 @@ classe `Composant` qui a une méthode `afficher`. Les autres classes, telles que `Bouton`, `Image` et `ListeDeroulante`, hériteraient de `Composant` et hériteraient ainsi de la méthode `afficher`. Elles pourraient toutes redéfinir la méthode `afficher` avec leur comportement personnalisé, -mais l'environnement de développement pourrait considérer tous les types comme des instances de -`Composant` et appeler `afficher` sur chacun d'entre eux. Mais puisque Rust n'a -pas d'héritage, il nous faut un autre moyen de structurer la bibliothèque `gui` -pour permettre aux utilisateurs de la prolonger avec de nouveaux types. +mais l'environnement de développement pourrait considérer tous les types comme +des instances de `Composant` et appeler `afficher` sur chacun d'entre eux. Mais +puisque Rust n'a pas d'héritage, il nous faut un autre moyen de structurer la +bibliothèque `gui` pour permettre aux utilisateurs de la prolonger avec de +nouveaux types. -```rust -pub trait Affichable { - fn afficher(&self); -} +```rust,noplayground +{{#rustdoc_include ../listings/ch17-oop/listing-17-03/src/lib.rs}} ``` -```rust -# pub trait Affichable { -# fn afficher(&self); -# } -# -pub struct Ecran { - pub composants: Vec>, -} +```rust,noplayground +{{#rustdoc_include ../listings/ch17-oop/listing-17-04/src/lib.rs:here}} ``` -```rust -# pub trait Affichable { -# fn afficher(&self); -# } -# -# pub struct Ecran { -# pub composants: Vec>, -# } -# -impl Ecran { - pub fn executer(&self) { - for composant in self.composants.iter() { - composant.afficher(); - } - } -} +```rust,noplayground +{{#rustdoc_include ../listings/ch17-oop/listing-17-05/src/lib.rs:here}} ``` -```rust -# pub trait Affichable { -# fn afficher(&self); -# } -# -pub struct Ecran { - pub composants: Vec, -} - -impl Ecran - where T: Affichable { - pub fn executer(&self) { - for composant in self.composants.iter() { - composant.afficher(); - } - } -} +```rust,noplayground +{{#rustdoc_include ../listings/ch17-oop/listing-17-06/src/lib.rs:here}} ``` -```rust -# pub trait Affichable { -# fn afficher(&self); -# } -# -pub struct Bouton { - pub largeur: u32, - pub hauteur: u32, - pub libelle: String, -} - -impl Affichable for Bouton { - fn afficher(&self) { - // code servant vraiment à afficher un bouton - } -} +```rust,noplayground +{{#rustdoc_include ../listings/ch17-oop/listing-17-07/src/lib.rs:here}} ``` ```rust,ignore -use gui::Affichable; - -struct ListeDeroulante { - largeur: u32, - hauteur: u32, - options: Vec, -} - -impl Affichable for ListeDeroulante { - fn afficher(&self) { - // code servant vraiment à afficher une liste déroulante - } -} +{{#rustdoc_include ../listings/ch17-oop/listing-17-08/src/main.rs:here}} ``` ```rust,ignore -use gui::{Ecran, Bouton}; - -fn main() { - let ecran = Ecran { - composants: vec![ - Box::new(ListeDeroulante { - largeur: 75, - hauteur: 10, - options: vec![ - String::from("Oui"), - String::from("Peut-être"), - String::from("Non") - ], - }), - Box::new(Bouton { - largeur: 50, - hauteur: 10, - libelle: String::from("OK"), - }), - ], - }; - - ecran.executer(); -} +{{#rustdoc_include ../listings/ch17-oop/listing-17-09/src/main.rs:here}} ``` ```rust,ignore,does_not_compile -use gui::Ecran; - -fn main() { - let ecran = Ecran { - composants: vec![ - Box::new(String::from("Salut")), - ], - }; - - ecran.executer(); -} +{{#rustdoc_include ../listings/ch17-oop/listing-17-10/src/main.rs}} ``` -```text -error[E0277]: the trait bound `std::string::String: gui::Affichable` is not satisfied - -- > src/main.rs:7:13 - | - 7 | Box::new(String::from("Salut")), - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait gui::Affichable is not - implemented for `std::string::String` - | - = note: required for the cast to the object type `gui::Affichable` +```console +{{#include ../listings/ch17-oop/listing-17-10/output.txt}} ``` Le compilateur vous préviendra lorsque vous essayez de faire quelque chose qui -enfreint les règles de sûreté au sens de l'objet lors de l'utilisation des objets traits. -Par exemple, supposons que nous avons essayé d'implémenter la structure `Ecran` -de l'encart 17-4 en la faisant contenir des types qui implémentent le trait -`Clone` plutôt que le trait `Affichable`, comme ceci : +enfreint les règles de sûreté au sens de l'objet lors de l'utilisation des +objets traits. Par exemple, supposons que nous avons essayé d'implémenter la +structure `Ecran` de l'encart 17-4 en la faisant contenir des types qui +implémentent le trait `Clone` plutôt que le trait `Affichable`, comme ceci : ```rust,ignore,does_not_compile -pub struct Ecran { - pub composants: Vec>, -} +{{#rustdoc_include ../listings/ch17-oop/no-listing-01-trait-object-of-clone/src/lib.rs}} ``` - - - -```text -error[E0038]: the trait `std::clone::Clone` cannot be made into an object - -- > src/lib.rs:2:5 - | -2 | pub composants: Vec>, - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait `std::clone::Clone` - cannot be made into an object - | - = note: the trait cannot require that `Self : Sized` + +```console +{{#include ../listings/ch17-oop/no-listing-01-trait-object-of-clone/output.txt}} ``` Cette erreur signifie que l'on ne peut pas utiliser ce trait comme d'un objet trait de cette façon. Si vous souhaitez connaître plus de détails sur la sûreté -au sens de l'objet, référez-vous à la [RFC 255 de Rust][rust-rfc-255] (en -anglais). +au sens de l'objet, référez-vous à la [RFC 255 de Rust][Rust RFC 255] (en +anglais) ou la section de la sécurité des objets dans la +[référence Rust][object-safety-reference]. - - -[rust-rfc-255]: https://github.com/rust-lang/rfcs/blob/master/text/0255-object-safety.md +[Rust RFC 255]: https://github.com/rust-lang/rfcs/blob/master/text/0255-object-safety.md [performance-of-code-using-generics]: ch10-01-syntax.html [dynamically-sized]: ch19-04-advanced-types.html +[object-safety-reference]: https://doc.rust-lang.org/reference/items/traits.html From 9b717ce556a650a358f1d50577c3a4df238f6892 Mon Sep 17 00:00:00 2001 From: Jimskapt Date: Tue, 16 Nov 2021 19:44:59 +0100 Subject: [PATCH 48/64] =?UTF-8?q?=F0=9F=93=A6=EF=B8=8F=20Add=20no-listing-?= =?UTF-8?q?02=20for=20ch17.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Cargo.lock | 6 +++++ .../Cargo.toml | 6 +++++ .../src/main.rs | 27 +++++++++++++++++++ .../Cargo.lock | 6 +++++ .../Cargo.toml | 6 +++++ .../src/main.rs | 27 +++++++++++++++++++ 6 files changed, 78 insertions(+) create mode 100644 FRENCH/listings-sources/ch17-oop/no-listing-02-no-loop-to-understand-error/Cargo.lock create mode 100644 FRENCH/listings-sources/ch17-oop/no-listing-02-no-loop-to-understand-error/Cargo.toml create mode 100644 FRENCH/listings-sources/ch17-oop/no-listing-02-no-loop-to-understand-error/src/main.rs create mode 100644 FRENCH/listings/ch17-oop/no-listing-02-no-loop-to-understand-error/Cargo.lock create mode 100644 FRENCH/listings/ch17-oop/no-listing-02-no-loop-to-understand-error/Cargo.toml create mode 100644 FRENCH/listings/ch17-oop/no-listing-02-no-loop-to-understand-error/src/main.rs diff --git a/FRENCH/listings-sources/ch17-oop/no-listing-02-no-loop-to-understand-error/Cargo.lock b/FRENCH/listings-sources/ch17-oop/no-listing-02-no-loop-to-understand-error/Cargo.lock new file mode 100644 index 0000000000..8e7ba9cf5d --- /dev/null +++ b/FRENCH/listings-sources/ch17-oop/no-listing-02-no-loop-to-understand-error/Cargo.lock @@ -0,0 +1,6 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +[[package]] +name = "shared-state" +version = "0.1.0" + diff --git a/FRENCH/listings-sources/ch17-oop/no-listing-02-no-loop-to-understand-error/Cargo.toml b/FRENCH/listings-sources/ch17-oop/no-listing-02-no-loop-to-understand-error/Cargo.toml new file mode 100644 index 0000000000..eaaec49577 --- /dev/null +++ b/FRENCH/listings-sources/ch17-oop/no-listing-02-no-loop-to-understand-error/Cargo.toml @@ -0,0 +1,6 @@ +[package] +name = "shared-state" +version = "0.1.0" +edition = "2018" + +[dependencies] diff --git a/FRENCH/listings-sources/ch17-oop/no-listing-02-no-loop-to-understand-error/src/main.rs b/FRENCH/listings-sources/ch17-oop/no-listing-02-no-loop-to-understand-error/src/main.rs new file mode 100644 index 0000000000..dbb1397719 --- /dev/null +++ b/FRENCH/listings-sources/ch17-oop/no-listing-02-no-loop-to-understand-error/src/main.rs @@ -0,0 +1,27 @@ +use std::sync::Mutex; +use std::thread; + +fn main() { + let counter = Mutex::new(0); + let mut handles = vec![]; + + let handle = thread::spawn(move || { + let mut num = counter.lock().unwrap(); + + *num += 1; + }); + handles.push(handle); + + let handle2 = thread::spawn(move || { + let mut num2 = counter.lock().unwrap(); + + *num2 += 1; + }); + handles.push(handle2); + + for handle in handles { + handle.join().unwrap(); + } + + println!("Result: {}", *counter.lock().unwrap()); +} diff --git a/FRENCH/listings/ch17-oop/no-listing-02-no-loop-to-understand-error/Cargo.lock b/FRENCH/listings/ch17-oop/no-listing-02-no-loop-to-understand-error/Cargo.lock new file mode 100644 index 0000000000..8e7ba9cf5d --- /dev/null +++ b/FRENCH/listings/ch17-oop/no-listing-02-no-loop-to-understand-error/Cargo.lock @@ -0,0 +1,6 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +[[package]] +name = "shared-state" +version = "0.1.0" + diff --git a/FRENCH/listings/ch17-oop/no-listing-02-no-loop-to-understand-error/Cargo.toml b/FRENCH/listings/ch17-oop/no-listing-02-no-loop-to-understand-error/Cargo.toml new file mode 100644 index 0000000000..eaaec49577 --- /dev/null +++ b/FRENCH/listings/ch17-oop/no-listing-02-no-loop-to-understand-error/Cargo.toml @@ -0,0 +1,6 @@ +[package] +name = "shared-state" +version = "0.1.0" +edition = "2018" + +[dependencies] diff --git a/FRENCH/listings/ch17-oop/no-listing-02-no-loop-to-understand-error/src/main.rs b/FRENCH/listings/ch17-oop/no-listing-02-no-loop-to-understand-error/src/main.rs new file mode 100644 index 0000000000..a2f8a84f71 --- /dev/null +++ b/FRENCH/listings/ch17-oop/no-listing-02-no-loop-to-understand-error/src/main.rs @@ -0,0 +1,27 @@ +use std::sync::Mutex; +use std::thread; + +fn main() { + let compteurs = Mutex::new(0); + let mut manipulateurs = vec![]; + + let manipulateur = thread::spawn(move || { + let mut nombre = compteurs.lock().unwrap(); + + *nombre += 1; + }); + manipulateurs.push(manipulateur); + + let manipulateur2 = thread::spawn(move || { + let mut nombre2 = compteurs.lock().unwrap(); + + *nombre2 += 1; + }); + manipulateurs.push(manipulateur2); + + for manipulateur in manipulateurs { + manipulateur.join().unwrap(); + } + + println!("Resultat : {}", *compteurs.lock().unwrap()); +} From d6acc578f7a510b922732df43073c7a4827921b1 Mon Sep 17 00:00:00 2001 From: Jimskapt Date: Tue, 16 Nov 2021 19:49:55 +0100 Subject: [PATCH 49/64] =?UTF-8?q?=E2=9C=8F=EF=B8=8F=20add=20break=20lines?= =?UTF-8?q?=20on=20FR-17-01=20due=20to=20length.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- FRENCH/src/ch17-01-what-is-oo.md | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/FRENCH/src/ch17-01-what-is-oo.md b/FRENCH/src/ch17-01-what-is-oo.md index 3174cf7277..675a25025d 100644 --- a/FRENCH/src/ch17-01-what-is-oo.md +++ b/FRENCH/src/ch17-01-what-is-oo.md @@ -60,9 +60,9 @@ functionality, according to the Gang of Four’s definition of objects. Si l'on se tient à cette définition, Rust est orienté objet : les structures et les énumérations ont des données, et les blocs `impl` leur fournissent des -méthodes. Bien que les structures et les énumérations avec des méthodes ne soient pas qualifiées -d'objets, elles en ont les fonctionnalités, d'après la définition des objets par -le *Gang of Four*. +méthodes. Bien que les structures et les énumérations avec des méthodes ne +soient pas qualifiées d'objets, elles en ont les fonctionnalités, d'après la +définition des objets par le *Gang of Four*. Dans ce cas, juste après que nous ayons créé la boucle de références, le -programme se termine. Les conséquences de cette boucle ne sont désastreuses. -Cependant, si un programme plus complexe alloue beaucoup de mémoire dans une -boucle de références et la garde pendant longtemps, le programme va utiliser -bien plus de mémoire qu'il a besoin et pourrait surcharger le système, qui -devrait épuiser la mémoire disponible. +programme se termine. Les conséquences de cette boucle ne sont pas +désastreuses. Cependant, si un programme plus complexe alloue beaucoup de +mémoire dans une boucle de références et la garde pendant longtemps, le +programme va utiliser bien plus de mémoire qu'il a besoin et pourrait +surcharger le système, qui devrait épuiser la mémoire disponible. -```rust +```rust,noplayground {{#rustdoc_include ../listings/ch17-oop/listing-17-12/src/lib.rs}} ``` @@ -273,12 +273,12 @@ le bloc `Billet` de l'encart 17-13 : Fichier : src/lib.rs -```rust +```rust,noplayground {{#rustdoc_include ../listings/ch17-oop/listing-17-13/src/lib.rs:here}} ``` @@ -343,12 +343,12 @@ montre l'implémentation de ceci : Fichier : src/lib.rs -```rust +```rust,noplayground {{#rustdoc_include ../listings/ch17-oop/listing-17-14/src/lib.rs:here}} ``` @@ -391,12 +391,12 @@ relecture d'un billet, qui devrait changer son état de `Brouillon` à Fichier : src/lib.rs -```rust +```rust,noplayground {{#rustdoc_include ../listings/ch17-oop/listing-17-15/src/lib.rs:here}} ``` @@ -534,12 +534,12 @@ approuvé, comme le montre l'encart 17-16 : Fichier : src/lib.rs -```rust +```rust,noplayground {{#rustdoc_include ../listings/ch17-oop/listing-17-16/src/lib.rs:here}} ``` @@ -685,12 +685,12 @@ l'encart 17-18 : Fichier : src/lib.rs -```rust +```rust,noplayground {{#rustdoc_include ../listings/ch17-oop/listing-17-18/src/lib.rs:here}} ``` @@ -964,12 +964,12 @@ compilera même pas. L'encart 17-19 nous propose les définitions d'une structur Fichier : src/lib.rs -```rust +```rust,noplayground {{#rustdoc_include ../listings/ch17-oop/listing-17-19/src/lib.rs}} ``` @@ -1055,12 +1055,12 @@ comme le propose l'encart 17-20 : Fichier : src/lib.rs -```rust +```rust,noplayground {{#rustdoc_include ../listings/ch17-oop/listing-17-20/src/lib.rs:here}} ``` @@ -1107,7 +1107,7 @@ But we also have to make some small changes to `main`. The `request_review` and `approve` methods return new instances rather than modifying the struct they’re called on, so we need to add more `let post =` shadowing assignments to save the returned instances. We also can’t have the assertions about the draft and -pending review post’s contents be empty strings, nor do we need them: we can’t +pending review posts' contents be empty strings, nor do we need them: we can’t compile code that tries to use the content of posts in those states any longer. The updated code in `main` is shown in Listing 17-21: --> From 29feae59f0110af09d526dffaa792f31b15d68fd Mon Sep 17 00:00:00 2001 From: Jimskapt Date: Fri, 19 Nov 2021 18:33:04 +0100 Subject: [PATCH 54/64] =?UTF-8?q?=E2=99=BB=EF=B8=8F=20Update=20translation?= =?UTF-8?q?=20on=20ch18-01.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../listing-18-01/Cargo.toml | 1 - .../listing-18-02/Cargo.toml | 1 - .../listing-18-03/Cargo.toml | 1 - .../listing-18-04/Cargo.toml | 1 - .../listing-18-05/Cargo.toml | 1 - .../listing-18-05/output.txt | 10 ++++------ .../listing-18-06/Cargo.toml | 1 - .../listing-18-07/Cargo.toml | 1 - .../listing-18-01/Cargo.toml | 1 - .../listing-18-02/Cargo.toml | 1 - .../listing-18-03/Cargo.toml | 1 - .../listing-18-04/Cargo.toml | 1 - .../listing-18-05/Cargo.toml | 1 - .../listing-18-05/output.txt | 10 ++++------ .../listing-18-06/Cargo.toml | 1 - .../listing-18-07/Cargo.toml | 1 - .../src/ch18-01-all-the-places-for-patterns.md | 17 ++++++++--------- 17 files changed, 16 insertions(+), 35 deletions(-) diff --git a/FRENCH/listings-sources/ch18-patterns-and-matching/listing-18-01/Cargo.toml b/FRENCH/listings-sources/ch18-patterns-and-matching/listing-18-01/Cargo.toml index f77be077b9..1ea5a1c005 100644 --- a/FRENCH/listings-sources/ch18-patterns-and-matching/listing-18-01/Cargo.toml +++ b/FRENCH/listings-sources/ch18-patterns-and-matching/listing-18-01/Cargo.toml @@ -1,7 +1,6 @@ [package] name = "patterns" version = "0.1.0" -authors = ["Your Name "] edition = "2018" [dependencies] diff --git a/FRENCH/listings-sources/ch18-patterns-and-matching/listing-18-02/Cargo.toml b/FRENCH/listings-sources/ch18-patterns-and-matching/listing-18-02/Cargo.toml index f77be077b9..1ea5a1c005 100644 --- a/FRENCH/listings-sources/ch18-patterns-and-matching/listing-18-02/Cargo.toml +++ b/FRENCH/listings-sources/ch18-patterns-and-matching/listing-18-02/Cargo.toml @@ -1,7 +1,6 @@ [package] name = "patterns" version = "0.1.0" -authors = ["Your Name "] edition = "2018" [dependencies] diff --git a/FRENCH/listings-sources/ch18-patterns-and-matching/listing-18-03/Cargo.toml b/FRENCH/listings-sources/ch18-patterns-and-matching/listing-18-03/Cargo.toml index f77be077b9..1ea5a1c005 100644 --- a/FRENCH/listings-sources/ch18-patterns-and-matching/listing-18-03/Cargo.toml +++ b/FRENCH/listings-sources/ch18-patterns-and-matching/listing-18-03/Cargo.toml @@ -1,7 +1,6 @@ [package] name = "patterns" version = "0.1.0" -authors = ["Your Name "] edition = "2018" [dependencies] diff --git a/FRENCH/listings-sources/ch18-patterns-and-matching/listing-18-04/Cargo.toml b/FRENCH/listings-sources/ch18-patterns-and-matching/listing-18-04/Cargo.toml index f77be077b9..1ea5a1c005 100644 --- a/FRENCH/listings-sources/ch18-patterns-and-matching/listing-18-04/Cargo.toml +++ b/FRENCH/listings-sources/ch18-patterns-and-matching/listing-18-04/Cargo.toml @@ -1,7 +1,6 @@ [package] name = "patterns" version = "0.1.0" -authors = ["Your Name "] edition = "2018" [dependencies] diff --git a/FRENCH/listings-sources/ch18-patterns-and-matching/listing-18-05/Cargo.toml b/FRENCH/listings-sources/ch18-patterns-and-matching/listing-18-05/Cargo.toml index f77be077b9..1ea5a1c005 100644 --- a/FRENCH/listings-sources/ch18-patterns-and-matching/listing-18-05/Cargo.toml +++ b/FRENCH/listings-sources/ch18-patterns-and-matching/listing-18-05/Cargo.toml @@ -1,7 +1,6 @@ [package] name = "patterns" version = "0.1.0" -authors = ["Your Name "] edition = "2018" [dependencies] diff --git a/FRENCH/listings-sources/ch18-patterns-and-matching/listing-18-05/output.txt b/FRENCH/listings-sources/ch18-patterns-and-matching/listing-18-05/output.txt index 6f9004dd11..c70d8d1c94 100644 --- a/FRENCH/listings-sources/ch18-patterns-and-matching/listing-18-05/output.txt +++ b/FRENCH/listings-sources/ch18-patterns-and-matching/listing-18-05/output.txt @@ -4,14 +4,12 @@ error[E0308]: mismatched types -- > src/main.rs:2:9 | 2 | let (x, y) = (1, 2, 3); - | ^^^^^^ expected a tuple with 3 elements, found one with 2 elements + | ^^^^^^ --------- this expression has type `({integer}, {integer}, {integer})` + | | + | expected a tuple with 3 elements, found one with 2 elements | = note: expected tuple `({integer}, {integer}, {integer})` found tuple `(_, _)` -error: aborting due to previous error - For more information about this error, try `rustc --explain E0308`. -error: could not compile `patterns`. - -To learn more, run the command again with --verbose. +error: could not compile `patterns` due to previous error \ No newline at end of file diff --git a/FRENCH/listings-sources/ch18-patterns-and-matching/listing-18-06/Cargo.toml b/FRENCH/listings-sources/ch18-patterns-and-matching/listing-18-06/Cargo.toml index f77be077b9..1ea5a1c005 100644 --- a/FRENCH/listings-sources/ch18-patterns-and-matching/listing-18-06/Cargo.toml +++ b/FRENCH/listings-sources/ch18-patterns-and-matching/listing-18-06/Cargo.toml @@ -1,7 +1,6 @@ [package] name = "patterns" version = "0.1.0" -authors = ["Your Name "] edition = "2018" [dependencies] diff --git a/FRENCH/listings-sources/ch18-patterns-and-matching/listing-18-07/Cargo.toml b/FRENCH/listings-sources/ch18-patterns-and-matching/listing-18-07/Cargo.toml index f77be077b9..1ea5a1c005 100644 --- a/FRENCH/listings-sources/ch18-patterns-and-matching/listing-18-07/Cargo.toml +++ b/FRENCH/listings-sources/ch18-patterns-and-matching/listing-18-07/Cargo.toml @@ -1,7 +1,6 @@ [package] name = "patterns" version = "0.1.0" -authors = ["Your Name "] edition = "2018" [dependencies] diff --git a/FRENCH/listings/ch18-patterns-and-matching/listing-18-01/Cargo.toml b/FRENCH/listings/ch18-patterns-and-matching/listing-18-01/Cargo.toml index f77be077b9..1ea5a1c005 100644 --- a/FRENCH/listings/ch18-patterns-and-matching/listing-18-01/Cargo.toml +++ b/FRENCH/listings/ch18-patterns-and-matching/listing-18-01/Cargo.toml @@ -1,7 +1,6 @@ [package] name = "patterns" version = "0.1.0" -authors = ["Your Name "] edition = "2018" [dependencies] diff --git a/FRENCH/listings/ch18-patterns-and-matching/listing-18-02/Cargo.toml b/FRENCH/listings/ch18-patterns-and-matching/listing-18-02/Cargo.toml index f77be077b9..1ea5a1c005 100644 --- a/FRENCH/listings/ch18-patterns-and-matching/listing-18-02/Cargo.toml +++ b/FRENCH/listings/ch18-patterns-and-matching/listing-18-02/Cargo.toml @@ -1,7 +1,6 @@ [package] name = "patterns" version = "0.1.0" -authors = ["Your Name "] edition = "2018" [dependencies] diff --git a/FRENCH/listings/ch18-patterns-and-matching/listing-18-03/Cargo.toml b/FRENCH/listings/ch18-patterns-and-matching/listing-18-03/Cargo.toml index f77be077b9..1ea5a1c005 100644 --- a/FRENCH/listings/ch18-patterns-and-matching/listing-18-03/Cargo.toml +++ b/FRENCH/listings/ch18-patterns-and-matching/listing-18-03/Cargo.toml @@ -1,7 +1,6 @@ [package] name = "patterns" version = "0.1.0" -authors = ["Your Name "] edition = "2018" [dependencies] diff --git a/FRENCH/listings/ch18-patterns-and-matching/listing-18-04/Cargo.toml b/FRENCH/listings/ch18-patterns-and-matching/listing-18-04/Cargo.toml index f77be077b9..1ea5a1c005 100644 --- a/FRENCH/listings/ch18-patterns-and-matching/listing-18-04/Cargo.toml +++ b/FRENCH/listings/ch18-patterns-and-matching/listing-18-04/Cargo.toml @@ -1,7 +1,6 @@ [package] name = "patterns" version = "0.1.0" -authors = ["Your Name "] edition = "2018" [dependencies] diff --git a/FRENCH/listings/ch18-patterns-and-matching/listing-18-05/Cargo.toml b/FRENCH/listings/ch18-patterns-and-matching/listing-18-05/Cargo.toml index f77be077b9..1ea5a1c005 100644 --- a/FRENCH/listings/ch18-patterns-and-matching/listing-18-05/Cargo.toml +++ b/FRENCH/listings/ch18-patterns-and-matching/listing-18-05/Cargo.toml @@ -1,7 +1,6 @@ [package] name = "patterns" version = "0.1.0" -authors = ["Your Name "] edition = "2018" [dependencies] diff --git a/FRENCH/listings/ch18-patterns-and-matching/listing-18-05/output.txt b/FRENCH/listings/ch18-patterns-and-matching/listing-18-05/output.txt index eae835e37c..5d9136f5e7 100644 --- a/FRENCH/listings/ch18-patterns-and-matching/listing-18-05/output.txt +++ b/FRENCH/listings/ch18-patterns-and-matching/listing-18-05/output.txt @@ -4,14 +4,12 @@ error[E0308]: mismatched types --> src/main.rs:2:9 | 2 | let (x, y) = (1, 2, 3); - | ^^^^^^ expected a tuple with 3 elements, found one with 2 elements + | ^^^^^^ --------- this expression has type `({integer}, {integer}, {integer})` + | | + | expected a tuple with 3 elements, found one with 2 elements | = note: expected tuple `({integer}, {integer}, {integer})` found tuple `(_, _)` -error: aborting due to previous error - For more information about this error, try `rustc --explain E0308`. -error: could not compile `patterns`. - -To learn more, run the command again with --verbose. +error: could not compile `patterns` due to previous error \ No newline at end of file diff --git a/FRENCH/listings/ch18-patterns-and-matching/listing-18-06/Cargo.toml b/FRENCH/listings/ch18-patterns-and-matching/listing-18-06/Cargo.toml index f77be077b9..1ea5a1c005 100644 --- a/FRENCH/listings/ch18-patterns-and-matching/listing-18-06/Cargo.toml +++ b/FRENCH/listings/ch18-patterns-and-matching/listing-18-06/Cargo.toml @@ -1,7 +1,6 @@ [package] name = "patterns" version = "0.1.0" -authors = ["Your Name "] edition = "2018" [dependencies] diff --git a/FRENCH/listings/ch18-patterns-and-matching/listing-18-07/Cargo.toml b/FRENCH/listings/ch18-patterns-and-matching/listing-18-07/Cargo.toml index f77be077b9..1ea5a1c005 100644 --- a/FRENCH/listings/ch18-patterns-and-matching/listing-18-07/Cargo.toml +++ b/FRENCH/listings/ch18-patterns-and-matching/listing-18-07/Cargo.toml @@ -1,7 +1,6 @@ [package] name = "patterns" version = "0.1.0" -authors = ["Your Name "] edition = "2018" [dependencies] diff --git a/FRENCH/src/ch18-01-all-the-places-for-patterns.md b/FRENCH/src/ch18-01-all-the-places-for-patterns.md index 71f7d6f0c1..ea09a8f16d 100644 --- a/FRENCH/src/ch18-01-all-the-places-for-patterns.md +++ b/FRENCH/src/ch18-01-all-the-places-for-patterns.md @@ -238,7 +238,6 @@ vecteur dans l'ordre opposé à celui dans lequel elles ont été insérées. {{#rustdoc_include ../listings/ch18-patterns-and-matching/listing-18-02/src/main.rs:here}} ``` - Nous avons utilisé la méthode `enumerate` pour produire une valeur et son indice -à partir d'un itérateur, que nous avons placé dans un tuple. Le premier appel à -`enumerate` va produire le tuple `(0, 'a')`. Lorsque cette valeur est adaptée au -motif `(indice, valeur)`, `indice` vaudra `0` et `valeur` vaudra `'a'`, et -affichera la première ligne sur la sortie. +à partir d'un itérateur, que nous avons placé dans un tuple. La premiere valeur +produite est le tuple `(0, 'a')`. Lorsque cette valeur est adaptée au motif +`(indice, valeur)`, `indice` vaudra `0` et `valeur` vaudra `'a'`, et affichera +la première ligne sur la sortie. src/main.rs:3:9 - | -3 | let Some(x) = une_option_quelconque; - | ^^^^^^^ pattern `None` not covered - | - = note: `let` bindings require an "irrefutable pattern", like a `struct` or an `enum` with only one variant - = note: for more information, visit https://doc.rust-lang.org/book/ch18-02-refutability.html + --> src/main.rs:3:9 + | +3 | let Some(x) = une_option_quelconque; + | ^^^^^^^ pattern `None` not covered + | + = note: `let` bindings require an "irrefutable pattern", like a `struct` or an `enum` with only one variant + = note: for more information, visit https://doc.rust-lang.org/book/ch18-02-refutability.html + = note: the matched value is of type `Option` help: you might want to use `if let` to ignore the variant that isn't matched - | -3 | if let Some(x) = une_option_quelconque { /* */ } - | - -error: aborting due to previous error + | +3 | if let Some(x) = une_option_quelconque { /* */ } + | For more information about this error, try `rustc --explain E0005`. -error: could not compile `patterns`. - -To learn more, run the command again with --verbose. +error: could not compile `patterns` due to previous error \ No newline at end of file diff --git a/FRENCH/listings/ch18-patterns-and-matching/listing-18-09/Cargo.toml b/FRENCH/listings/ch18-patterns-and-matching/listing-18-09/Cargo.toml index f77be077b9..1ea5a1c005 100644 --- a/FRENCH/listings/ch18-patterns-and-matching/listing-18-09/Cargo.toml +++ b/FRENCH/listings/ch18-patterns-and-matching/listing-18-09/Cargo.toml @@ -1,7 +1,6 @@ [package] name = "patterns" version = "0.1.0" -authors = ["Your Name "] edition = "2018" [dependencies] diff --git a/FRENCH/listings/ch18-patterns-and-matching/listing-18-10/Cargo.toml b/FRENCH/listings/ch18-patterns-and-matching/listing-18-10/Cargo.toml index f77be077b9..1ea5a1c005 100644 --- a/FRENCH/listings/ch18-patterns-and-matching/listing-18-10/Cargo.toml +++ b/FRENCH/listings/ch18-patterns-and-matching/listing-18-10/Cargo.toml @@ -1,7 +1,6 @@ [package] name = "patterns" version = "0.1.0" -authors = ["Your Name "] edition = "2018" [dependencies] diff --git a/FRENCH/listings/ch18-patterns-and-matching/listing-18-10/output.txt b/FRENCH/listings/ch18-patterns-and-matching/listing-18-10/output.txt index 8b72e18134..b527311bb1 100644 --- a/FRENCH/listings/ch18-patterns-and-matching/listing-18-10/output.txt +++ b/FRENCH/listings/ch18-patterns-and-matching/listing-18-10/output.txt @@ -1,6 +1,6 @@ $ cargo run Compiling patterns v0.1.0 (file:///projects/patterns) -warning: irrefutable if-let pattern +warning: irrefutable `if let` pattern --> src/main.rs:2:5 | 2 | / if let x = 5 { @@ -9,7 +9,10 @@ warning: irrefutable if-let pattern | |_____^ | = note: `#[warn(irrefutable_let_patterns)]` on by default + = note: this pattern will always match, so the `if let` is useless + = help: consider replacing the `if let` with a `let` +warning: `patterns` (bin "patterns") generated 1 warning Finished dev [unoptimized + debuginfo] target(s) in 0.39s Running `target/debug/patterns` 5 From bca1eaf8820dc34e0f85a1ec339288538b09f4f5 Mon Sep 17 00:00:00 2001 From: Jimskapt Date: Fri, 19 Nov 2021 19:31:17 +0100 Subject: [PATCH 56/64] =?UTF-8?q?=E2=99=BB=EF=B8=8F=20Update=20translation?= =?UTF-8?q?=20on=20ch18-03.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ch18-patterns-and-matching/listing-18-11/Cargo.toml | 1 - .../ch18-patterns-and-matching/listing-18-12/Cargo.toml | 1 - .../ch18-patterns-and-matching/listing-18-13/Cargo.toml | 1 - .../ch18-patterns-and-matching/listing-18-14/Cargo.toml | 1 - .../ch18-patterns-and-matching/listing-18-15/Cargo.toml | 1 - .../ch18-patterns-and-matching/listing-18-16/Cargo.toml | 1 - .../ch18-patterns-and-matching/listing-18-17/Cargo.toml | 1 - .../ch18-patterns-and-matching/listing-18-18/Cargo.toml | 1 - .../ch18-patterns-and-matching/listing-18-19/Cargo.toml | 1 - .../ch18-patterns-and-matching/listing-18-20/Cargo.toml | 1 - .../ch18-patterns-and-matching/listing-18-21/Cargo.toml | 1 - .../ch18-patterns-and-matching/listing-18-22/Cargo.toml | 1 - .../ch18-patterns-and-matching/listing-18-23/Cargo.toml | 1 - .../ch18-patterns-and-matching/listing-18-24/Cargo.toml | 1 - .../ch18-patterns-and-matching/listing-18-25/Cargo.lock | 2 -- .../ch18-patterns-and-matching/listing-18-25/Cargo.toml | 1 - .../ch18-patterns-and-matching/listing-18-25/output.txt | 6 +----- .../ch18-patterns-and-matching/listing-18-26/Cargo.toml | 1 - .../ch18-patterns-and-matching/listing-18-27/Cargo.toml | 1 - .../ch18-patterns-and-matching/listing-18-28/Cargo.toml | 1 - .../ch18-patterns-and-matching/listing-18-29/Cargo.toml | 1 - .../no-listing-01-literals/Cargo.toml | 1 - .../no-listing-02-multiple-patterns/Cargo.toml | 1 - .../no-listing-03-ranges/Cargo.toml | 1 - .../no-listing-04-ranges-of-char/Cargo.toml | 1 - .../Cargo.toml | 1 - .../ch18-patterns-and-matching/listing-18-11/Cargo.toml | 1 - .../ch18-patterns-and-matching/listing-18-12/Cargo.toml | 1 - .../ch18-patterns-and-matching/listing-18-13/Cargo.toml | 1 - .../ch18-patterns-and-matching/listing-18-14/Cargo.toml | 1 - .../ch18-patterns-and-matching/listing-18-15/Cargo.toml | 1 - .../ch18-patterns-and-matching/listing-18-16/Cargo.toml | 1 - .../ch18-patterns-and-matching/listing-18-17/Cargo.toml | 1 - .../ch18-patterns-and-matching/listing-18-18/Cargo.toml | 1 - .../ch18-patterns-and-matching/listing-18-19/Cargo.toml | 1 - .../ch18-patterns-and-matching/listing-18-20/Cargo.toml | 1 - .../ch18-patterns-and-matching/listing-18-21/Cargo.toml | 1 - .../ch18-patterns-and-matching/listing-18-22/Cargo.toml | 1 - .../ch18-patterns-and-matching/listing-18-23/Cargo.toml | 1 - .../ch18-patterns-and-matching/listing-18-24/Cargo.toml | 1 - .../ch18-patterns-and-matching/listing-18-25/Cargo.lock | 2 -- .../ch18-patterns-and-matching/listing-18-25/Cargo.toml | 1 - .../ch18-patterns-and-matching/listing-18-25/output.txt | 6 +----- .../ch18-patterns-and-matching/listing-18-26/Cargo.toml | 1 - .../ch18-patterns-and-matching/listing-18-27/Cargo.toml | 1 - .../ch18-patterns-and-matching/listing-18-28/Cargo.toml | 1 - .../ch18-patterns-and-matching/listing-18-29/Cargo.toml | 1 - .../no-listing-01-literals/Cargo.toml | 1 - .../no-listing-02-multiple-patterns/Cargo.toml | 1 - .../no-listing-03-ranges/Cargo.toml | 1 - .../no-listing-04-ranges-of-char/Cargo.toml | 1 - .../Cargo.toml | 1 - FRENCH/src/ch18-03-pattern-syntax.md | 2 +- 53 files changed, 3 insertions(+), 63 deletions(-) diff --git a/FRENCH/listings-sources/ch18-patterns-and-matching/listing-18-11/Cargo.toml b/FRENCH/listings-sources/ch18-patterns-and-matching/listing-18-11/Cargo.toml index f77be077b9..1ea5a1c005 100644 --- a/FRENCH/listings-sources/ch18-patterns-and-matching/listing-18-11/Cargo.toml +++ b/FRENCH/listings-sources/ch18-patterns-and-matching/listing-18-11/Cargo.toml @@ -1,7 +1,6 @@ [package] name = "patterns" version = "0.1.0" -authors = ["Your Name "] edition = "2018" [dependencies] diff --git a/FRENCH/listings-sources/ch18-patterns-and-matching/listing-18-12/Cargo.toml b/FRENCH/listings-sources/ch18-patterns-and-matching/listing-18-12/Cargo.toml index f77be077b9..1ea5a1c005 100644 --- a/FRENCH/listings-sources/ch18-patterns-and-matching/listing-18-12/Cargo.toml +++ b/FRENCH/listings-sources/ch18-patterns-and-matching/listing-18-12/Cargo.toml @@ -1,7 +1,6 @@ [package] name = "patterns" version = "0.1.0" -authors = ["Your Name "] edition = "2018" [dependencies] diff --git a/FRENCH/listings-sources/ch18-patterns-and-matching/listing-18-13/Cargo.toml b/FRENCH/listings-sources/ch18-patterns-and-matching/listing-18-13/Cargo.toml index f77be077b9..1ea5a1c005 100644 --- a/FRENCH/listings-sources/ch18-patterns-and-matching/listing-18-13/Cargo.toml +++ b/FRENCH/listings-sources/ch18-patterns-and-matching/listing-18-13/Cargo.toml @@ -1,7 +1,6 @@ [package] name = "patterns" version = "0.1.0" -authors = ["Your Name "] edition = "2018" [dependencies] diff --git a/FRENCH/listings-sources/ch18-patterns-and-matching/listing-18-14/Cargo.toml b/FRENCH/listings-sources/ch18-patterns-and-matching/listing-18-14/Cargo.toml index f77be077b9..1ea5a1c005 100644 --- a/FRENCH/listings-sources/ch18-patterns-and-matching/listing-18-14/Cargo.toml +++ b/FRENCH/listings-sources/ch18-patterns-and-matching/listing-18-14/Cargo.toml @@ -1,7 +1,6 @@ [package] name = "patterns" version = "0.1.0" -authors = ["Your Name "] edition = "2018" [dependencies] diff --git a/FRENCH/listings-sources/ch18-patterns-and-matching/listing-18-15/Cargo.toml b/FRENCH/listings-sources/ch18-patterns-and-matching/listing-18-15/Cargo.toml index f77be077b9..1ea5a1c005 100644 --- a/FRENCH/listings-sources/ch18-patterns-and-matching/listing-18-15/Cargo.toml +++ b/FRENCH/listings-sources/ch18-patterns-and-matching/listing-18-15/Cargo.toml @@ -1,7 +1,6 @@ [package] name = "patterns" version = "0.1.0" -authors = ["Your Name "] edition = "2018" [dependencies] diff --git a/FRENCH/listings-sources/ch18-patterns-and-matching/listing-18-16/Cargo.toml b/FRENCH/listings-sources/ch18-patterns-and-matching/listing-18-16/Cargo.toml index f77be077b9..1ea5a1c005 100644 --- a/FRENCH/listings-sources/ch18-patterns-and-matching/listing-18-16/Cargo.toml +++ b/FRENCH/listings-sources/ch18-patterns-and-matching/listing-18-16/Cargo.toml @@ -1,7 +1,6 @@ [package] name = "patterns" version = "0.1.0" -authors = ["Your Name "] edition = "2018" [dependencies] diff --git a/FRENCH/listings-sources/ch18-patterns-and-matching/listing-18-17/Cargo.toml b/FRENCH/listings-sources/ch18-patterns-and-matching/listing-18-17/Cargo.toml index f77be077b9..1ea5a1c005 100644 --- a/FRENCH/listings-sources/ch18-patterns-and-matching/listing-18-17/Cargo.toml +++ b/FRENCH/listings-sources/ch18-patterns-and-matching/listing-18-17/Cargo.toml @@ -1,7 +1,6 @@ [package] name = "patterns" version = "0.1.0" -authors = ["Your Name "] edition = "2018" [dependencies] diff --git a/FRENCH/listings-sources/ch18-patterns-and-matching/listing-18-18/Cargo.toml b/FRENCH/listings-sources/ch18-patterns-and-matching/listing-18-18/Cargo.toml index f77be077b9..1ea5a1c005 100644 --- a/FRENCH/listings-sources/ch18-patterns-and-matching/listing-18-18/Cargo.toml +++ b/FRENCH/listings-sources/ch18-patterns-and-matching/listing-18-18/Cargo.toml @@ -1,7 +1,6 @@ [package] name = "patterns" version = "0.1.0" -authors = ["Your Name "] edition = "2018" [dependencies] diff --git a/FRENCH/listings-sources/ch18-patterns-and-matching/listing-18-19/Cargo.toml b/FRENCH/listings-sources/ch18-patterns-and-matching/listing-18-19/Cargo.toml index f77be077b9..1ea5a1c005 100644 --- a/FRENCH/listings-sources/ch18-patterns-and-matching/listing-18-19/Cargo.toml +++ b/FRENCH/listings-sources/ch18-patterns-and-matching/listing-18-19/Cargo.toml @@ -1,7 +1,6 @@ [package] name = "patterns" version = "0.1.0" -authors = ["Your Name "] edition = "2018" [dependencies] diff --git a/FRENCH/listings-sources/ch18-patterns-and-matching/listing-18-20/Cargo.toml b/FRENCH/listings-sources/ch18-patterns-and-matching/listing-18-20/Cargo.toml index f77be077b9..1ea5a1c005 100644 --- a/FRENCH/listings-sources/ch18-patterns-and-matching/listing-18-20/Cargo.toml +++ b/FRENCH/listings-sources/ch18-patterns-and-matching/listing-18-20/Cargo.toml @@ -1,7 +1,6 @@ [package] name = "patterns" version = "0.1.0" -authors = ["Your Name "] edition = "2018" [dependencies] diff --git a/FRENCH/listings-sources/ch18-patterns-and-matching/listing-18-21/Cargo.toml b/FRENCH/listings-sources/ch18-patterns-and-matching/listing-18-21/Cargo.toml index f77be077b9..1ea5a1c005 100644 --- a/FRENCH/listings-sources/ch18-patterns-and-matching/listing-18-21/Cargo.toml +++ b/FRENCH/listings-sources/ch18-patterns-and-matching/listing-18-21/Cargo.toml @@ -1,7 +1,6 @@ [package] name = "patterns" version = "0.1.0" -authors = ["Your Name "] edition = "2018" [dependencies] diff --git a/FRENCH/listings-sources/ch18-patterns-and-matching/listing-18-22/Cargo.toml b/FRENCH/listings-sources/ch18-patterns-and-matching/listing-18-22/Cargo.toml index f77be077b9..1ea5a1c005 100644 --- a/FRENCH/listings-sources/ch18-patterns-and-matching/listing-18-22/Cargo.toml +++ b/FRENCH/listings-sources/ch18-patterns-and-matching/listing-18-22/Cargo.toml @@ -1,7 +1,6 @@ [package] name = "patterns" version = "0.1.0" -authors = ["Your Name "] edition = "2018" [dependencies] diff --git a/FRENCH/listings-sources/ch18-patterns-and-matching/listing-18-23/Cargo.toml b/FRENCH/listings-sources/ch18-patterns-and-matching/listing-18-23/Cargo.toml index f77be077b9..1ea5a1c005 100644 --- a/FRENCH/listings-sources/ch18-patterns-and-matching/listing-18-23/Cargo.toml +++ b/FRENCH/listings-sources/ch18-patterns-and-matching/listing-18-23/Cargo.toml @@ -1,7 +1,6 @@ [package] name = "patterns" version = "0.1.0" -authors = ["Your Name "] edition = "2018" [dependencies] diff --git a/FRENCH/listings-sources/ch18-patterns-and-matching/listing-18-24/Cargo.toml b/FRENCH/listings-sources/ch18-patterns-and-matching/listing-18-24/Cargo.toml index f77be077b9..1ea5a1c005 100644 --- a/FRENCH/listings-sources/ch18-patterns-and-matching/listing-18-24/Cargo.toml +++ b/FRENCH/listings-sources/ch18-patterns-and-matching/listing-18-24/Cargo.toml @@ -1,7 +1,6 @@ [package] name = "patterns" version = "0.1.0" -authors = ["Your Name "] edition = "2018" [dependencies] diff --git a/FRENCH/listings-sources/ch18-patterns-and-matching/listing-18-25/Cargo.lock b/FRENCH/listings-sources/ch18-patterns-and-matching/listing-18-25/Cargo.lock index 2b4fa29032..a233623e55 100644 --- a/FRENCH/listings-sources/ch18-patterns-and-matching/listing-18-25/Cargo.lock +++ b/FRENCH/listings-sources/ch18-patterns-and-matching/listing-18-25/Cargo.lock @@ -1,5 +1,3 @@ -# This file is automatically @generated by Cargo. -# It is not intended for manual editing. [[package]] name = "patterns" version = "0.1.0" diff --git a/FRENCH/listings-sources/ch18-patterns-and-matching/listing-18-25/Cargo.toml b/FRENCH/listings-sources/ch18-patterns-and-matching/listing-18-25/Cargo.toml index f77be077b9..1ea5a1c005 100644 --- a/FRENCH/listings-sources/ch18-patterns-and-matching/listing-18-25/Cargo.toml +++ b/FRENCH/listings-sources/ch18-patterns-and-matching/listing-18-25/Cargo.toml @@ -1,7 +1,6 @@ [package] name = "patterns" version = "0.1.0" -authors = ["Your Name "] edition = "2018" [dependencies] diff --git a/FRENCH/listings-sources/ch18-patterns-and-matching/listing-18-25/output.txt b/FRENCH/listings-sources/ch18-patterns-and-matching/listing-18-25/output.txt index 50f23584c0..440aa01421 100644 --- a/FRENCH/listings-sources/ch18-patterns-and-matching/listing-18-25/output.txt +++ b/FRENCH/listings-sources/ch18-patterns-and-matching/listing-18-25/output.txt @@ -8,8 +8,4 @@ error: `..` can only be used once per tuple pattern | | | previously used here -error: aborting due to previous error - -error: could not compile `patterns`. - -To learn more, run the command again with --verbose. +error: could not compile `patterns` due to previous error \ No newline at end of file diff --git a/FRENCH/listings-sources/ch18-patterns-and-matching/listing-18-26/Cargo.toml b/FRENCH/listings-sources/ch18-patterns-and-matching/listing-18-26/Cargo.toml index f77be077b9..1ea5a1c005 100644 --- a/FRENCH/listings-sources/ch18-patterns-and-matching/listing-18-26/Cargo.toml +++ b/FRENCH/listings-sources/ch18-patterns-and-matching/listing-18-26/Cargo.toml @@ -1,7 +1,6 @@ [package] name = "patterns" version = "0.1.0" -authors = ["Your Name "] edition = "2018" [dependencies] diff --git a/FRENCH/listings-sources/ch18-patterns-and-matching/listing-18-27/Cargo.toml b/FRENCH/listings-sources/ch18-patterns-and-matching/listing-18-27/Cargo.toml index f77be077b9..1ea5a1c005 100644 --- a/FRENCH/listings-sources/ch18-patterns-and-matching/listing-18-27/Cargo.toml +++ b/FRENCH/listings-sources/ch18-patterns-and-matching/listing-18-27/Cargo.toml @@ -1,7 +1,6 @@ [package] name = "patterns" version = "0.1.0" -authors = ["Your Name "] edition = "2018" [dependencies] diff --git a/FRENCH/listings-sources/ch18-patterns-and-matching/listing-18-28/Cargo.toml b/FRENCH/listings-sources/ch18-patterns-and-matching/listing-18-28/Cargo.toml index f77be077b9..1ea5a1c005 100644 --- a/FRENCH/listings-sources/ch18-patterns-and-matching/listing-18-28/Cargo.toml +++ b/FRENCH/listings-sources/ch18-patterns-and-matching/listing-18-28/Cargo.toml @@ -1,7 +1,6 @@ [package] name = "patterns" version = "0.1.0" -authors = ["Your Name "] edition = "2018" [dependencies] diff --git a/FRENCH/listings-sources/ch18-patterns-and-matching/listing-18-29/Cargo.toml b/FRENCH/listings-sources/ch18-patterns-and-matching/listing-18-29/Cargo.toml index f77be077b9..1ea5a1c005 100644 --- a/FRENCH/listings-sources/ch18-patterns-and-matching/listing-18-29/Cargo.toml +++ b/FRENCH/listings-sources/ch18-patterns-and-matching/listing-18-29/Cargo.toml @@ -1,7 +1,6 @@ [package] name = "patterns" version = "0.1.0" -authors = ["Your Name "] edition = "2018" [dependencies] diff --git a/FRENCH/listings-sources/ch18-patterns-and-matching/no-listing-01-literals/Cargo.toml b/FRENCH/listings-sources/ch18-patterns-and-matching/no-listing-01-literals/Cargo.toml index f77be077b9..1ea5a1c005 100644 --- a/FRENCH/listings-sources/ch18-patterns-and-matching/no-listing-01-literals/Cargo.toml +++ b/FRENCH/listings-sources/ch18-patterns-and-matching/no-listing-01-literals/Cargo.toml @@ -1,7 +1,6 @@ [package] name = "patterns" version = "0.1.0" -authors = ["Your Name "] edition = "2018" [dependencies] diff --git a/FRENCH/listings-sources/ch18-patterns-and-matching/no-listing-02-multiple-patterns/Cargo.toml b/FRENCH/listings-sources/ch18-patterns-and-matching/no-listing-02-multiple-patterns/Cargo.toml index f77be077b9..1ea5a1c005 100644 --- a/FRENCH/listings-sources/ch18-patterns-and-matching/no-listing-02-multiple-patterns/Cargo.toml +++ b/FRENCH/listings-sources/ch18-patterns-and-matching/no-listing-02-multiple-patterns/Cargo.toml @@ -1,7 +1,6 @@ [package] name = "patterns" version = "0.1.0" -authors = ["Your Name "] edition = "2018" [dependencies] diff --git a/FRENCH/listings-sources/ch18-patterns-and-matching/no-listing-03-ranges/Cargo.toml b/FRENCH/listings-sources/ch18-patterns-and-matching/no-listing-03-ranges/Cargo.toml index f77be077b9..1ea5a1c005 100644 --- a/FRENCH/listings-sources/ch18-patterns-and-matching/no-listing-03-ranges/Cargo.toml +++ b/FRENCH/listings-sources/ch18-patterns-and-matching/no-listing-03-ranges/Cargo.toml @@ -1,7 +1,6 @@ [package] name = "patterns" version = "0.1.0" -authors = ["Your Name "] edition = "2018" [dependencies] diff --git a/FRENCH/listings-sources/ch18-patterns-and-matching/no-listing-04-ranges-of-char/Cargo.toml b/FRENCH/listings-sources/ch18-patterns-and-matching/no-listing-04-ranges-of-char/Cargo.toml index f77be077b9..1ea5a1c005 100644 --- a/FRENCH/listings-sources/ch18-patterns-and-matching/no-listing-04-ranges-of-char/Cargo.toml +++ b/FRENCH/listings-sources/ch18-patterns-and-matching/no-listing-04-ranges-of-char/Cargo.toml @@ -1,7 +1,6 @@ [package] name = "patterns" version = "0.1.0" -authors = ["Your Name "] edition = "2018" [dependencies] diff --git a/FRENCH/listings-sources/ch18-patterns-and-matching/no-listing-05-destructuring-structs-and-tuples/Cargo.toml b/FRENCH/listings-sources/ch18-patterns-and-matching/no-listing-05-destructuring-structs-and-tuples/Cargo.toml index f77be077b9..1ea5a1c005 100644 --- a/FRENCH/listings-sources/ch18-patterns-and-matching/no-listing-05-destructuring-structs-and-tuples/Cargo.toml +++ b/FRENCH/listings-sources/ch18-patterns-and-matching/no-listing-05-destructuring-structs-and-tuples/Cargo.toml @@ -1,7 +1,6 @@ [package] name = "patterns" version = "0.1.0" -authors = ["Your Name "] edition = "2018" [dependencies] diff --git a/FRENCH/listings/ch18-patterns-and-matching/listing-18-11/Cargo.toml b/FRENCH/listings/ch18-patterns-and-matching/listing-18-11/Cargo.toml index f77be077b9..1ea5a1c005 100644 --- a/FRENCH/listings/ch18-patterns-and-matching/listing-18-11/Cargo.toml +++ b/FRENCH/listings/ch18-patterns-and-matching/listing-18-11/Cargo.toml @@ -1,7 +1,6 @@ [package] name = "patterns" version = "0.1.0" -authors = ["Your Name "] edition = "2018" [dependencies] diff --git a/FRENCH/listings/ch18-patterns-and-matching/listing-18-12/Cargo.toml b/FRENCH/listings/ch18-patterns-and-matching/listing-18-12/Cargo.toml index f77be077b9..1ea5a1c005 100644 --- a/FRENCH/listings/ch18-patterns-and-matching/listing-18-12/Cargo.toml +++ b/FRENCH/listings/ch18-patterns-and-matching/listing-18-12/Cargo.toml @@ -1,7 +1,6 @@ [package] name = "patterns" version = "0.1.0" -authors = ["Your Name "] edition = "2018" [dependencies] diff --git a/FRENCH/listings/ch18-patterns-and-matching/listing-18-13/Cargo.toml b/FRENCH/listings/ch18-patterns-and-matching/listing-18-13/Cargo.toml index f77be077b9..1ea5a1c005 100644 --- a/FRENCH/listings/ch18-patterns-and-matching/listing-18-13/Cargo.toml +++ b/FRENCH/listings/ch18-patterns-and-matching/listing-18-13/Cargo.toml @@ -1,7 +1,6 @@ [package] name = "patterns" version = "0.1.0" -authors = ["Your Name "] edition = "2018" [dependencies] diff --git a/FRENCH/listings/ch18-patterns-and-matching/listing-18-14/Cargo.toml b/FRENCH/listings/ch18-patterns-and-matching/listing-18-14/Cargo.toml index f77be077b9..1ea5a1c005 100644 --- a/FRENCH/listings/ch18-patterns-and-matching/listing-18-14/Cargo.toml +++ b/FRENCH/listings/ch18-patterns-and-matching/listing-18-14/Cargo.toml @@ -1,7 +1,6 @@ [package] name = "patterns" version = "0.1.0" -authors = ["Your Name "] edition = "2018" [dependencies] diff --git a/FRENCH/listings/ch18-patterns-and-matching/listing-18-15/Cargo.toml b/FRENCH/listings/ch18-patterns-and-matching/listing-18-15/Cargo.toml index f77be077b9..1ea5a1c005 100644 --- a/FRENCH/listings/ch18-patterns-and-matching/listing-18-15/Cargo.toml +++ b/FRENCH/listings/ch18-patterns-and-matching/listing-18-15/Cargo.toml @@ -1,7 +1,6 @@ [package] name = "patterns" version = "0.1.0" -authors = ["Your Name "] edition = "2018" [dependencies] diff --git a/FRENCH/listings/ch18-patterns-and-matching/listing-18-16/Cargo.toml b/FRENCH/listings/ch18-patterns-and-matching/listing-18-16/Cargo.toml index f77be077b9..1ea5a1c005 100644 --- a/FRENCH/listings/ch18-patterns-and-matching/listing-18-16/Cargo.toml +++ b/FRENCH/listings/ch18-patterns-and-matching/listing-18-16/Cargo.toml @@ -1,7 +1,6 @@ [package] name = "patterns" version = "0.1.0" -authors = ["Your Name "] edition = "2018" [dependencies] diff --git a/FRENCH/listings/ch18-patterns-and-matching/listing-18-17/Cargo.toml b/FRENCH/listings/ch18-patterns-and-matching/listing-18-17/Cargo.toml index f77be077b9..1ea5a1c005 100644 --- a/FRENCH/listings/ch18-patterns-and-matching/listing-18-17/Cargo.toml +++ b/FRENCH/listings/ch18-patterns-and-matching/listing-18-17/Cargo.toml @@ -1,7 +1,6 @@ [package] name = "patterns" version = "0.1.0" -authors = ["Your Name "] edition = "2018" [dependencies] diff --git a/FRENCH/listings/ch18-patterns-and-matching/listing-18-18/Cargo.toml b/FRENCH/listings/ch18-patterns-and-matching/listing-18-18/Cargo.toml index f77be077b9..1ea5a1c005 100644 --- a/FRENCH/listings/ch18-patterns-and-matching/listing-18-18/Cargo.toml +++ b/FRENCH/listings/ch18-patterns-and-matching/listing-18-18/Cargo.toml @@ -1,7 +1,6 @@ [package] name = "patterns" version = "0.1.0" -authors = ["Your Name "] edition = "2018" [dependencies] diff --git a/FRENCH/listings/ch18-patterns-and-matching/listing-18-19/Cargo.toml b/FRENCH/listings/ch18-patterns-and-matching/listing-18-19/Cargo.toml index f77be077b9..1ea5a1c005 100644 --- a/FRENCH/listings/ch18-patterns-and-matching/listing-18-19/Cargo.toml +++ b/FRENCH/listings/ch18-patterns-and-matching/listing-18-19/Cargo.toml @@ -1,7 +1,6 @@ [package] name = "patterns" version = "0.1.0" -authors = ["Your Name "] edition = "2018" [dependencies] diff --git a/FRENCH/listings/ch18-patterns-and-matching/listing-18-20/Cargo.toml b/FRENCH/listings/ch18-patterns-and-matching/listing-18-20/Cargo.toml index f77be077b9..1ea5a1c005 100644 --- a/FRENCH/listings/ch18-patterns-and-matching/listing-18-20/Cargo.toml +++ b/FRENCH/listings/ch18-patterns-and-matching/listing-18-20/Cargo.toml @@ -1,7 +1,6 @@ [package] name = "patterns" version = "0.1.0" -authors = ["Your Name "] edition = "2018" [dependencies] diff --git a/FRENCH/listings/ch18-patterns-and-matching/listing-18-21/Cargo.toml b/FRENCH/listings/ch18-patterns-and-matching/listing-18-21/Cargo.toml index f77be077b9..1ea5a1c005 100644 --- a/FRENCH/listings/ch18-patterns-and-matching/listing-18-21/Cargo.toml +++ b/FRENCH/listings/ch18-patterns-and-matching/listing-18-21/Cargo.toml @@ -1,7 +1,6 @@ [package] name = "patterns" version = "0.1.0" -authors = ["Your Name "] edition = "2018" [dependencies] diff --git a/FRENCH/listings/ch18-patterns-and-matching/listing-18-22/Cargo.toml b/FRENCH/listings/ch18-patterns-and-matching/listing-18-22/Cargo.toml index f77be077b9..1ea5a1c005 100644 --- a/FRENCH/listings/ch18-patterns-and-matching/listing-18-22/Cargo.toml +++ b/FRENCH/listings/ch18-patterns-and-matching/listing-18-22/Cargo.toml @@ -1,7 +1,6 @@ [package] name = "patterns" version = "0.1.0" -authors = ["Your Name "] edition = "2018" [dependencies] diff --git a/FRENCH/listings/ch18-patterns-and-matching/listing-18-23/Cargo.toml b/FRENCH/listings/ch18-patterns-and-matching/listing-18-23/Cargo.toml index f77be077b9..1ea5a1c005 100644 --- a/FRENCH/listings/ch18-patterns-and-matching/listing-18-23/Cargo.toml +++ b/FRENCH/listings/ch18-patterns-and-matching/listing-18-23/Cargo.toml @@ -1,7 +1,6 @@ [package] name = "patterns" version = "0.1.0" -authors = ["Your Name "] edition = "2018" [dependencies] diff --git a/FRENCH/listings/ch18-patterns-and-matching/listing-18-24/Cargo.toml b/FRENCH/listings/ch18-patterns-and-matching/listing-18-24/Cargo.toml index f77be077b9..1ea5a1c005 100644 --- a/FRENCH/listings/ch18-patterns-and-matching/listing-18-24/Cargo.toml +++ b/FRENCH/listings/ch18-patterns-and-matching/listing-18-24/Cargo.toml @@ -1,7 +1,6 @@ [package] name = "patterns" version = "0.1.0" -authors = ["Your Name "] edition = "2018" [dependencies] diff --git a/FRENCH/listings/ch18-patterns-and-matching/listing-18-25/Cargo.lock b/FRENCH/listings/ch18-patterns-and-matching/listing-18-25/Cargo.lock index 2b4fa29032..a233623e55 100644 --- a/FRENCH/listings/ch18-patterns-and-matching/listing-18-25/Cargo.lock +++ b/FRENCH/listings/ch18-patterns-and-matching/listing-18-25/Cargo.lock @@ -1,5 +1,3 @@ -# This file is automatically @generated by Cargo. -# It is not intended for manual editing. [[package]] name = "patterns" version = "0.1.0" diff --git a/FRENCH/listings/ch18-patterns-and-matching/listing-18-25/Cargo.toml b/FRENCH/listings/ch18-patterns-and-matching/listing-18-25/Cargo.toml index f77be077b9..1ea5a1c005 100644 --- a/FRENCH/listings/ch18-patterns-and-matching/listing-18-25/Cargo.toml +++ b/FRENCH/listings/ch18-patterns-and-matching/listing-18-25/Cargo.toml @@ -1,7 +1,6 @@ [package] name = "patterns" version = "0.1.0" -authors = ["Your Name "] edition = "2018" [dependencies] diff --git a/FRENCH/listings/ch18-patterns-and-matching/listing-18-25/output.txt b/FRENCH/listings/ch18-patterns-and-matching/listing-18-25/output.txt index 3044c4b30c..de60c50ff7 100644 --- a/FRENCH/listings/ch18-patterns-and-matching/listing-18-25/output.txt +++ b/FRENCH/listings/ch18-patterns-and-matching/listing-18-25/output.txt @@ -8,8 +8,4 @@ error: `..` can only be used once per tuple pattern | | | previously used here -error: aborting due to previous error - -error: could not compile `patterns`. - -To learn more, run the command again with --verbose. +error: could not compile `patterns` due to previous error \ No newline at end of file diff --git a/FRENCH/listings/ch18-patterns-and-matching/listing-18-26/Cargo.toml b/FRENCH/listings/ch18-patterns-and-matching/listing-18-26/Cargo.toml index f77be077b9..1ea5a1c005 100644 --- a/FRENCH/listings/ch18-patterns-and-matching/listing-18-26/Cargo.toml +++ b/FRENCH/listings/ch18-patterns-and-matching/listing-18-26/Cargo.toml @@ -1,7 +1,6 @@ [package] name = "patterns" version = "0.1.0" -authors = ["Your Name "] edition = "2018" [dependencies] diff --git a/FRENCH/listings/ch18-patterns-and-matching/listing-18-27/Cargo.toml b/FRENCH/listings/ch18-patterns-and-matching/listing-18-27/Cargo.toml index f77be077b9..1ea5a1c005 100644 --- a/FRENCH/listings/ch18-patterns-and-matching/listing-18-27/Cargo.toml +++ b/FRENCH/listings/ch18-patterns-and-matching/listing-18-27/Cargo.toml @@ -1,7 +1,6 @@ [package] name = "patterns" version = "0.1.0" -authors = ["Your Name "] edition = "2018" [dependencies] diff --git a/FRENCH/listings/ch18-patterns-and-matching/listing-18-28/Cargo.toml b/FRENCH/listings/ch18-patterns-and-matching/listing-18-28/Cargo.toml index f77be077b9..1ea5a1c005 100644 --- a/FRENCH/listings/ch18-patterns-and-matching/listing-18-28/Cargo.toml +++ b/FRENCH/listings/ch18-patterns-and-matching/listing-18-28/Cargo.toml @@ -1,7 +1,6 @@ [package] name = "patterns" version = "0.1.0" -authors = ["Your Name "] edition = "2018" [dependencies] diff --git a/FRENCH/listings/ch18-patterns-and-matching/listing-18-29/Cargo.toml b/FRENCH/listings/ch18-patterns-and-matching/listing-18-29/Cargo.toml index f77be077b9..1ea5a1c005 100644 --- a/FRENCH/listings/ch18-patterns-and-matching/listing-18-29/Cargo.toml +++ b/FRENCH/listings/ch18-patterns-and-matching/listing-18-29/Cargo.toml @@ -1,7 +1,6 @@ [package] name = "patterns" version = "0.1.0" -authors = ["Your Name "] edition = "2018" [dependencies] diff --git a/FRENCH/listings/ch18-patterns-and-matching/no-listing-01-literals/Cargo.toml b/FRENCH/listings/ch18-patterns-and-matching/no-listing-01-literals/Cargo.toml index f77be077b9..1ea5a1c005 100644 --- a/FRENCH/listings/ch18-patterns-and-matching/no-listing-01-literals/Cargo.toml +++ b/FRENCH/listings/ch18-patterns-and-matching/no-listing-01-literals/Cargo.toml @@ -1,7 +1,6 @@ [package] name = "patterns" version = "0.1.0" -authors = ["Your Name "] edition = "2018" [dependencies] diff --git a/FRENCH/listings/ch18-patterns-and-matching/no-listing-02-multiple-patterns/Cargo.toml b/FRENCH/listings/ch18-patterns-and-matching/no-listing-02-multiple-patterns/Cargo.toml index f77be077b9..1ea5a1c005 100644 --- a/FRENCH/listings/ch18-patterns-and-matching/no-listing-02-multiple-patterns/Cargo.toml +++ b/FRENCH/listings/ch18-patterns-and-matching/no-listing-02-multiple-patterns/Cargo.toml @@ -1,7 +1,6 @@ [package] name = "patterns" version = "0.1.0" -authors = ["Your Name "] edition = "2018" [dependencies] diff --git a/FRENCH/listings/ch18-patterns-and-matching/no-listing-03-ranges/Cargo.toml b/FRENCH/listings/ch18-patterns-and-matching/no-listing-03-ranges/Cargo.toml index f77be077b9..1ea5a1c005 100644 --- a/FRENCH/listings/ch18-patterns-and-matching/no-listing-03-ranges/Cargo.toml +++ b/FRENCH/listings/ch18-patterns-and-matching/no-listing-03-ranges/Cargo.toml @@ -1,7 +1,6 @@ [package] name = "patterns" version = "0.1.0" -authors = ["Your Name "] edition = "2018" [dependencies] diff --git a/FRENCH/listings/ch18-patterns-and-matching/no-listing-04-ranges-of-char/Cargo.toml b/FRENCH/listings/ch18-patterns-and-matching/no-listing-04-ranges-of-char/Cargo.toml index f77be077b9..1ea5a1c005 100644 --- a/FRENCH/listings/ch18-patterns-and-matching/no-listing-04-ranges-of-char/Cargo.toml +++ b/FRENCH/listings/ch18-patterns-and-matching/no-listing-04-ranges-of-char/Cargo.toml @@ -1,7 +1,6 @@ [package] name = "patterns" version = "0.1.0" -authors = ["Your Name "] edition = "2018" [dependencies] diff --git a/FRENCH/listings/ch18-patterns-and-matching/no-listing-05-destructuring-structs-and-tuples/Cargo.toml b/FRENCH/listings/ch18-patterns-and-matching/no-listing-05-destructuring-structs-and-tuples/Cargo.toml index f77be077b9..1ea5a1c005 100644 --- a/FRENCH/listings/ch18-patterns-and-matching/no-listing-05-destructuring-structs-and-tuples/Cargo.toml +++ b/FRENCH/listings/ch18-patterns-and-matching/no-listing-05-destructuring-structs-and-tuples/Cargo.toml @@ -1,7 +1,6 @@ [package] name = "patterns" version = "0.1.0" -authors = ["Your Name "] edition = "2018" [dependencies] diff --git a/FRENCH/src/ch18-03-pattern-syntax.md b/FRENCH/src/ch18-03-pattern-syntax.md index 70417f163c..57d3590c88 100644 --- a/FRENCH/src/ch18-03-pattern-syntax.md +++ b/FRENCH/src/ch18-03-pattern-syntax.md @@ -918,7 +918,7 @@ warning because that could be a bug. But sometimes it’s useful to create a variable you won’t use yet, such as when you’re prototyping or just starting a project. In this situation, you can tell Rust not to warn you about the unused variable by starting the name of the variable with an underscore. In Listing -18-20, we create two unused variables, but when we run this code, we should +18-20, we create two unused variables, but when we compile this code, we should only get a warning about one of them. --> From babaaeac5449a48cbf7987553a5ed88345291c14 Mon Sep 17 00:00:00 2001 From: Jimskapt Date: Fri, 19 Nov 2021 20:22:36 +0100 Subject: [PATCH 57/64] =?UTF-8?q?=E2=99=BB=EF=B8=8F=20Update=20translation?= =?UTF-8?q?=20on=20ch19-01.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../listing-19-01/Cargo.toml | 1 - .../listing-19-02/Cargo.toml | 1 - .../listing-19-03/Cargo.toml | 1 - .../listing-19-04/Cargo.toml | 1 - .../listing-19-05/Cargo.toml | 1 - .../listing-19-05/output.txt | 6 +- .../listing-19-06/Cargo.toml | 1 - .../listing-19-07/Cargo.toml | 1 - .../listing-19-08/Cargo.toml | 1 - .../listing-19-09/Cargo.toml | 1 - .../listing-19-10/Cargo.toml | 1 - .../listing-19-11/Cargo.toml | 1 - .../no-listing-01-unsafe-fn/Cargo.toml | 1 - .../output-only-01-missing-unsafe/Cargo.toml | 1 - .../output-only-01-missing-unsafe/output.txt | 6 +- .../listing-19-01/Cargo.toml | 1 - .../listing-19-02/Cargo.toml | 1 - .../listing-19-03/Cargo.toml | 1 - .../listing-19-04/Cargo.toml | 1 - .../listing-19-05/Cargo.toml | 1 - .../listing-19-05/output.txt | 6 +- .../listing-19-06/Cargo.toml | 1 - .../listing-19-07/Cargo.toml | 1 - .../listing-19-08/Cargo.toml | 1 - .../listing-19-09/Cargo.toml | 1 - .../listing-19-10/Cargo.toml | 1 - .../listing-19-11/Cargo.toml | 1 - .../no-listing-01-unsafe-fn/Cargo.toml | 1 - .../output-only-01-missing-unsafe/Cargo.toml | 1 - .../output-only-01-missing-unsafe/output.txt | 6 +- FRENCH/src/ch19-01-unsafe-rust.md | 116 +++++++++--------- 31 files changed, 63 insertions(+), 103 deletions(-) diff --git a/FRENCH/listings-sources/ch19-advanced-features/listing-19-01/Cargo.toml b/FRENCH/listings-sources/ch19-advanced-features/listing-19-01/Cargo.toml index aabe3bdf5c..940d4ab820 100644 --- a/FRENCH/listings-sources/ch19-advanced-features/listing-19-01/Cargo.toml +++ b/FRENCH/listings-sources/ch19-advanced-features/listing-19-01/Cargo.toml @@ -1,7 +1,6 @@ [package] name = "unsafe-example" version = "0.1.0" -authors = ["Your Name "] edition = "2018" [dependencies] diff --git a/FRENCH/listings-sources/ch19-advanced-features/listing-19-02/Cargo.toml b/FRENCH/listings-sources/ch19-advanced-features/listing-19-02/Cargo.toml index aabe3bdf5c..940d4ab820 100644 --- a/FRENCH/listings-sources/ch19-advanced-features/listing-19-02/Cargo.toml +++ b/FRENCH/listings-sources/ch19-advanced-features/listing-19-02/Cargo.toml @@ -1,7 +1,6 @@ [package] name = "unsafe-example" version = "0.1.0" -authors = ["Your Name "] edition = "2018" [dependencies] diff --git a/FRENCH/listings-sources/ch19-advanced-features/listing-19-03/Cargo.toml b/FRENCH/listings-sources/ch19-advanced-features/listing-19-03/Cargo.toml index aabe3bdf5c..940d4ab820 100644 --- a/FRENCH/listings-sources/ch19-advanced-features/listing-19-03/Cargo.toml +++ b/FRENCH/listings-sources/ch19-advanced-features/listing-19-03/Cargo.toml @@ -1,7 +1,6 @@ [package] name = "unsafe-example" version = "0.1.0" -authors = ["Your Name "] edition = "2018" [dependencies] diff --git a/FRENCH/listings-sources/ch19-advanced-features/listing-19-04/Cargo.toml b/FRENCH/listings-sources/ch19-advanced-features/listing-19-04/Cargo.toml index aabe3bdf5c..940d4ab820 100644 --- a/FRENCH/listings-sources/ch19-advanced-features/listing-19-04/Cargo.toml +++ b/FRENCH/listings-sources/ch19-advanced-features/listing-19-04/Cargo.toml @@ -1,7 +1,6 @@ [package] name = "unsafe-example" version = "0.1.0" -authors = ["Your Name "] edition = "2018" [dependencies] diff --git a/FRENCH/listings-sources/ch19-advanced-features/listing-19-05/Cargo.toml b/FRENCH/listings-sources/ch19-advanced-features/listing-19-05/Cargo.toml index aabe3bdf5c..940d4ab820 100644 --- a/FRENCH/listings-sources/ch19-advanced-features/listing-19-05/Cargo.toml +++ b/FRENCH/listings-sources/ch19-advanced-features/listing-19-05/Cargo.toml @@ -1,7 +1,6 @@ [package] name = "unsafe-example" version = "0.1.0" -authors = ["Your Name "] edition = "2018" [dependencies] diff --git a/FRENCH/listings-sources/ch19-advanced-features/listing-19-05/output.txt b/FRENCH/listings-sources/ch19-advanced-features/listing-19-05/output.txt index 12c2eebc91..835c89e21b 100644 --- a/FRENCH/listings-sources/ch19-advanced-features/listing-19-05/output.txt +++ b/FRENCH/listings-sources/ch19-advanced-features/listing-19-05/output.txt @@ -13,9 +13,5 @@ error[E0499]: cannot borrow `*slice` as mutable more than once at a time | | first mutable borrow occurs here | returning this value requires that `*slice` is borrowed for `'1` -error: aborting due to previous error - For more information about this error, try `rustc --explain E0499`. -error: could not compile `unsafe-example`. - -To learn more, run the command again with --verbose. +error: could not compile `unsafe-example` due to previous error \ No newline at end of file diff --git a/FRENCH/listings-sources/ch19-advanced-features/listing-19-06/Cargo.toml b/FRENCH/listings-sources/ch19-advanced-features/listing-19-06/Cargo.toml index aabe3bdf5c..940d4ab820 100644 --- a/FRENCH/listings-sources/ch19-advanced-features/listing-19-06/Cargo.toml +++ b/FRENCH/listings-sources/ch19-advanced-features/listing-19-06/Cargo.toml @@ -1,7 +1,6 @@ [package] name = "unsafe-example" version = "0.1.0" -authors = ["Your Name "] edition = "2018" [dependencies] diff --git a/FRENCH/listings-sources/ch19-advanced-features/listing-19-07/Cargo.toml b/FRENCH/listings-sources/ch19-advanced-features/listing-19-07/Cargo.toml index aabe3bdf5c..940d4ab820 100644 --- a/FRENCH/listings-sources/ch19-advanced-features/listing-19-07/Cargo.toml +++ b/FRENCH/listings-sources/ch19-advanced-features/listing-19-07/Cargo.toml @@ -1,7 +1,6 @@ [package] name = "unsafe-example" version = "0.1.0" -authors = ["Your Name "] edition = "2018" [dependencies] diff --git a/FRENCH/listings-sources/ch19-advanced-features/listing-19-08/Cargo.toml b/FRENCH/listings-sources/ch19-advanced-features/listing-19-08/Cargo.toml index aabe3bdf5c..940d4ab820 100644 --- a/FRENCH/listings-sources/ch19-advanced-features/listing-19-08/Cargo.toml +++ b/FRENCH/listings-sources/ch19-advanced-features/listing-19-08/Cargo.toml @@ -1,7 +1,6 @@ [package] name = "unsafe-example" version = "0.1.0" -authors = ["Your Name "] edition = "2018" [dependencies] diff --git a/FRENCH/listings-sources/ch19-advanced-features/listing-19-09/Cargo.toml b/FRENCH/listings-sources/ch19-advanced-features/listing-19-09/Cargo.toml index aabe3bdf5c..940d4ab820 100644 --- a/FRENCH/listings-sources/ch19-advanced-features/listing-19-09/Cargo.toml +++ b/FRENCH/listings-sources/ch19-advanced-features/listing-19-09/Cargo.toml @@ -1,7 +1,6 @@ [package] name = "unsafe-example" version = "0.1.0" -authors = ["Your Name "] edition = "2018" [dependencies] diff --git a/FRENCH/listings-sources/ch19-advanced-features/listing-19-10/Cargo.toml b/FRENCH/listings-sources/ch19-advanced-features/listing-19-10/Cargo.toml index aabe3bdf5c..940d4ab820 100644 --- a/FRENCH/listings-sources/ch19-advanced-features/listing-19-10/Cargo.toml +++ b/FRENCH/listings-sources/ch19-advanced-features/listing-19-10/Cargo.toml @@ -1,7 +1,6 @@ [package] name = "unsafe-example" version = "0.1.0" -authors = ["Your Name "] edition = "2018" [dependencies] diff --git a/FRENCH/listings-sources/ch19-advanced-features/listing-19-11/Cargo.toml b/FRENCH/listings-sources/ch19-advanced-features/listing-19-11/Cargo.toml index aabe3bdf5c..940d4ab820 100644 --- a/FRENCH/listings-sources/ch19-advanced-features/listing-19-11/Cargo.toml +++ b/FRENCH/listings-sources/ch19-advanced-features/listing-19-11/Cargo.toml @@ -1,7 +1,6 @@ [package] name = "unsafe-example" version = "0.1.0" -authors = ["Your Name "] edition = "2018" [dependencies] diff --git a/FRENCH/listings-sources/ch19-advanced-features/no-listing-01-unsafe-fn/Cargo.toml b/FRENCH/listings-sources/ch19-advanced-features/no-listing-01-unsafe-fn/Cargo.toml index aabe3bdf5c..940d4ab820 100644 --- a/FRENCH/listings-sources/ch19-advanced-features/no-listing-01-unsafe-fn/Cargo.toml +++ b/FRENCH/listings-sources/ch19-advanced-features/no-listing-01-unsafe-fn/Cargo.toml @@ -1,7 +1,6 @@ [package] name = "unsafe-example" version = "0.1.0" -authors = ["Your Name "] edition = "2018" [dependencies] diff --git a/FRENCH/listings-sources/ch19-advanced-features/output-only-01-missing-unsafe/Cargo.toml b/FRENCH/listings-sources/ch19-advanced-features/output-only-01-missing-unsafe/Cargo.toml index aabe3bdf5c..940d4ab820 100644 --- a/FRENCH/listings-sources/ch19-advanced-features/output-only-01-missing-unsafe/Cargo.toml +++ b/FRENCH/listings-sources/ch19-advanced-features/output-only-01-missing-unsafe/Cargo.toml @@ -1,7 +1,6 @@ [package] name = "unsafe-example" version = "0.1.0" -authors = ["Your Name "] edition = "2018" [dependencies] diff --git a/FRENCH/listings-sources/ch19-advanced-features/output-only-01-missing-unsafe/output.txt b/FRENCH/listings-sources/ch19-advanced-features/output-only-01-missing-unsafe/output.txt index 68eb1e2170..6a0b669d8e 100644 --- a/FRENCH/listings-sources/ch19-advanced-features/output-only-01-missing-unsafe/output.txt +++ b/FRENCH/listings-sources/ch19-advanced-features/output-only-01-missing-unsafe/output.txt @@ -8,9 +8,5 @@ error[E0133]: call to unsafe function is unsafe and requires unsafe function or | = note: consult the function's documentation for information on how to avoid undefined behavior -error: aborting due to previous error - For more information about this error, try `rustc --explain E0133`. -error: could not compile `unsafe-example`. - -To learn more, run the command again with --verbose. +error: could not compile `unsafe-example` due to previous error \ No newline at end of file diff --git a/FRENCH/listings/ch19-advanced-features/listing-19-01/Cargo.toml b/FRENCH/listings/ch19-advanced-features/listing-19-01/Cargo.toml index aabe3bdf5c..940d4ab820 100644 --- a/FRENCH/listings/ch19-advanced-features/listing-19-01/Cargo.toml +++ b/FRENCH/listings/ch19-advanced-features/listing-19-01/Cargo.toml @@ -1,7 +1,6 @@ [package] name = "unsafe-example" version = "0.1.0" -authors = ["Your Name "] edition = "2018" [dependencies] diff --git a/FRENCH/listings/ch19-advanced-features/listing-19-02/Cargo.toml b/FRENCH/listings/ch19-advanced-features/listing-19-02/Cargo.toml index aabe3bdf5c..940d4ab820 100644 --- a/FRENCH/listings/ch19-advanced-features/listing-19-02/Cargo.toml +++ b/FRENCH/listings/ch19-advanced-features/listing-19-02/Cargo.toml @@ -1,7 +1,6 @@ [package] name = "unsafe-example" version = "0.1.0" -authors = ["Your Name "] edition = "2018" [dependencies] diff --git a/FRENCH/listings/ch19-advanced-features/listing-19-03/Cargo.toml b/FRENCH/listings/ch19-advanced-features/listing-19-03/Cargo.toml index aabe3bdf5c..940d4ab820 100644 --- a/FRENCH/listings/ch19-advanced-features/listing-19-03/Cargo.toml +++ b/FRENCH/listings/ch19-advanced-features/listing-19-03/Cargo.toml @@ -1,7 +1,6 @@ [package] name = "unsafe-example" version = "0.1.0" -authors = ["Your Name "] edition = "2018" [dependencies] diff --git a/FRENCH/listings/ch19-advanced-features/listing-19-04/Cargo.toml b/FRENCH/listings/ch19-advanced-features/listing-19-04/Cargo.toml index aabe3bdf5c..940d4ab820 100644 --- a/FRENCH/listings/ch19-advanced-features/listing-19-04/Cargo.toml +++ b/FRENCH/listings/ch19-advanced-features/listing-19-04/Cargo.toml @@ -1,7 +1,6 @@ [package] name = "unsafe-example" version = "0.1.0" -authors = ["Your Name "] edition = "2018" [dependencies] diff --git a/FRENCH/listings/ch19-advanced-features/listing-19-05/Cargo.toml b/FRENCH/listings/ch19-advanced-features/listing-19-05/Cargo.toml index aabe3bdf5c..940d4ab820 100644 --- a/FRENCH/listings/ch19-advanced-features/listing-19-05/Cargo.toml +++ b/FRENCH/listings/ch19-advanced-features/listing-19-05/Cargo.toml @@ -1,7 +1,6 @@ [package] name = "unsafe-example" version = "0.1.0" -authors = ["Your Name "] edition = "2018" [dependencies] diff --git a/FRENCH/listings/ch19-advanced-features/listing-19-05/output.txt b/FRENCH/listings/ch19-advanced-features/listing-19-05/output.txt index 3df0e2b64c..19b05c3136 100644 --- a/FRENCH/listings/ch19-advanced-features/listing-19-05/output.txt +++ b/FRENCH/listings/ch19-advanced-features/listing-19-05/output.txt @@ -13,9 +13,5 @@ error[E0499]: cannot borrow `*slice` as mutable more than once at a time | | first mutable borrow occurs here | returning this value requires that `*slice` is borrowed for `'1` -error: aborting due to previous error - For more information about this error, try `rustc --explain E0499`. -error: could not compile `unsafe-example`. - -To learn more, run the command again with --verbose. +error: could not compile `unsafe-example` due to previous error \ No newline at end of file diff --git a/FRENCH/listings/ch19-advanced-features/listing-19-06/Cargo.toml b/FRENCH/listings/ch19-advanced-features/listing-19-06/Cargo.toml index aabe3bdf5c..940d4ab820 100644 --- a/FRENCH/listings/ch19-advanced-features/listing-19-06/Cargo.toml +++ b/FRENCH/listings/ch19-advanced-features/listing-19-06/Cargo.toml @@ -1,7 +1,6 @@ [package] name = "unsafe-example" version = "0.1.0" -authors = ["Your Name "] edition = "2018" [dependencies] diff --git a/FRENCH/listings/ch19-advanced-features/listing-19-07/Cargo.toml b/FRENCH/listings/ch19-advanced-features/listing-19-07/Cargo.toml index aabe3bdf5c..940d4ab820 100644 --- a/FRENCH/listings/ch19-advanced-features/listing-19-07/Cargo.toml +++ b/FRENCH/listings/ch19-advanced-features/listing-19-07/Cargo.toml @@ -1,7 +1,6 @@ [package] name = "unsafe-example" version = "0.1.0" -authors = ["Your Name "] edition = "2018" [dependencies] diff --git a/FRENCH/listings/ch19-advanced-features/listing-19-08/Cargo.toml b/FRENCH/listings/ch19-advanced-features/listing-19-08/Cargo.toml index aabe3bdf5c..940d4ab820 100644 --- a/FRENCH/listings/ch19-advanced-features/listing-19-08/Cargo.toml +++ b/FRENCH/listings/ch19-advanced-features/listing-19-08/Cargo.toml @@ -1,7 +1,6 @@ [package] name = "unsafe-example" version = "0.1.0" -authors = ["Your Name "] edition = "2018" [dependencies] diff --git a/FRENCH/listings/ch19-advanced-features/listing-19-09/Cargo.toml b/FRENCH/listings/ch19-advanced-features/listing-19-09/Cargo.toml index aabe3bdf5c..940d4ab820 100644 --- a/FRENCH/listings/ch19-advanced-features/listing-19-09/Cargo.toml +++ b/FRENCH/listings/ch19-advanced-features/listing-19-09/Cargo.toml @@ -1,7 +1,6 @@ [package] name = "unsafe-example" version = "0.1.0" -authors = ["Your Name "] edition = "2018" [dependencies] diff --git a/FRENCH/listings/ch19-advanced-features/listing-19-10/Cargo.toml b/FRENCH/listings/ch19-advanced-features/listing-19-10/Cargo.toml index aabe3bdf5c..940d4ab820 100644 --- a/FRENCH/listings/ch19-advanced-features/listing-19-10/Cargo.toml +++ b/FRENCH/listings/ch19-advanced-features/listing-19-10/Cargo.toml @@ -1,7 +1,6 @@ [package] name = "unsafe-example" version = "0.1.0" -authors = ["Your Name "] edition = "2018" [dependencies] diff --git a/FRENCH/listings/ch19-advanced-features/listing-19-11/Cargo.toml b/FRENCH/listings/ch19-advanced-features/listing-19-11/Cargo.toml index aabe3bdf5c..940d4ab820 100644 --- a/FRENCH/listings/ch19-advanced-features/listing-19-11/Cargo.toml +++ b/FRENCH/listings/ch19-advanced-features/listing-19-11/Cargo.toml @@ -1,7 +1,6 @@ [package] name = "unsafe-example" version = "0.1.0" -authors = ["Your Name "] edition = "2018" [dependencies] diff --git a/FRENCH/listings/ch19-advanced-features/no-listing-01-unsafe-fn/Cargo.toml b/FRENCH/listings/ch19-advanced-features/no-listing-01-unsafe-fn/Cargo.toml index aabe3bdf5c..940d4ab820 100644 --- a/FRENCH/listings/ch19-advanced-features/no-listing-01-unsafe-fn/Cargo.toml +++ b/FRENCH/listings/ch19-advanced-features/no-listing-01-unsafe-fn/Cargo.toml @@ -1,7 +1,6 @@ [package] name = "unsafe-example" version = "0.1.0" -authors = ["Your Name "] edition = "2018" [dependencies] diff --git a/FRENCH/listings/ch19-advanced-features/output-only-01-missing-unsafe/Cargo.toml b/FRENCH/listings/ch19-advanced-features/output-only-01-missing-unsafe/Cargo.toml index aabe3bdf5c..940d4ab820 100644 --- a/FRENCH/listings/ch19-advanced-features/output-only-01-missing-unsafe/Cargo.toml +++ b/FRENCH/listings/ch19-advanced-features/output-only-01-missing-unsafe/Cargo.toml @@ -1,7 +1,6 @@ [package] name = "unsafe-example" version = "0.1.0" -authors = ["Your Name "] edition = "2018" [dependencies] diff --git a/FRENCH/listings/ch19-advanced-features/output-only-01-missing-unsafe/output.txt b/FRENCH/listings/ch19-advanced-features/output-only-01-missing-unsafe/output.txt index 480de0906a..322b64cd73 100644 --- a/FRENCH/listings/ch19-advanced-features/output-only-01-missing-unsafe/output.txt +++ b/FRENCH/listings/ch19-advanced-features/output-only-01-missing-unsafe/output.txt @@ -8,9 +8,5 @@ error[E0133]: call to unsafe function is unsafe and requires unsafe function or | = note: consult the function's documentation for information on how to avoid undefined behavior -error: aborting due to previous error - For more information about this error, try `rustc --explain E0133`. -error: could not compile `unsafe-example`. - -To learn more, run the command again with --verbose. +error: could not compile `unsafe-example` due to previous error \ No newline at end of file diff --git a/FRENCH/src/ch19-01-unsafe-rust.md b/FRENCH/src/ch19-01-unsafe-rust.md index 8d8f5fa041..95db60a467 100644 --- a/FRENCH/src/ch19-01-unsafe-rust.md +++ b/FRENCH/src/ch19-01-unsafe-rust.md @@ -22,23 +22,25 @@ supplémentaires. Unsafe Rust exists because, by nature, static analysis is conservative. When the compiler tries to determine whether or not code upholds the guarantees, it’s better for it to reject some valid programs rather than accept some -invalid programs. Although the code might be okay, as far as Rust is able to -tell, it’s not! In these cases, you can use unsafe code to tell the compiler, -“Trust me, I know what I’m doing.” The downside is that you use it at your own -risk: if you use unsafe code incorrectly, problems due to memory unsafety, such -as null pointer dereferencing, can occur. +invalid programs. Although the code *might* be okay, if the Rust compiler +doesn’t have enough information to be confident, it will reject the code. In +these cases, you can use unsafe code to tell the compiler, “Trust me, I know +what I’m doing.” The downside is that you use it at your own risk: if you use +unsafe code incorrectly, problems due to memory unsafety, such as null pointer +dereferencing, can occur. --> Le Rust non sécurisé existe car, par nature, l'analyse statique est conservative. Lorsque le compilateur essaye de déterminer si le code respecte ou non les garanties, il vaut mieux rejeter quelques programmes valides plutôt que -d'accepter quelques programmes invalides. Bien que le code puisse être correct, -dès que Rust n'est pas capable de le comprendre, il ne l'est plus ! Dans ce cas, -vous pouvez utiliser du code non sécurisé pour dire au compilateur “fais-moi -confiance, je sais ce que je fait”. La contrepartie pour cela est que vous -l'utilisez à vos risques et périls : si vous écrivez du code non sécurisé de -manière incorrecte, des problèmes liés à la sécurité de la mémoire peuvent se -produire, comme le déréférencement d'un pointeur vide par exemple. +d'accepter quelques programmes invalides. Bien que le code *puisse* être +correct, si le compilateur Rust n'a pas assez d'information pour être sûr, il +va refuser ce code. Dans ce cas, vous pouvez utiliser du code non sécurisé pour +dire au compilateur “fais-moi confiance, je sais ce que je fait”. La +contrepartie pour cela est que vous l'utilisez à vos risques et périls : si +vous écrivez du code non sécurisé de manière incorrecte, des problèmes liés à +la sécurité de la mémoire peuvent se produire, comme le déréférencement d'un +pointeur vide par exemple. -```rust,unsafe +```rust {{#rustdoc_include ../listings/ch19-advanced-features/listing-19-03/src/main.rs:here}} ``` @@ -424,12 +426,12 @@ body: Voici une fonction non sécurisée `dangereux`, qui ne fait rien dans son corps : -```rust,unsafe +```rust {{#rustdoc_include ../listings/ch19-advanced-features/no-listing-01-unsafe-fn/src/main.rs:here}} ``` @@ -617,12 +619,12 @@ quelques appels à des fonctions non sécurisées pour construire une implémentation de `split_at_mut` qui fonctionne. -```rust,unsafe +```rust {{#rustdoc_include ../listings/ch19-advanced-features/listing-19-06/src/main.rs:here}} ``` @@ -719,12 +721,12 @@ En contre-partie, l'utilisation de `slice::from_raw_parts_mut` dans l'encart arbitraire dans la mémoire et crée un slice de 10 000 éléments. -```rust,unsafe +```rust {{#rustdoc_include ../listings/ch19-advanced-features/listing-19-07/src/main.rs:here}} ``` @@ -790,12 +792,12 @@ en toute sécurité revient au développeur. Fichier : src/main.rs -```rust,unsafe +```rust {{#rustdoc_include ../listings/ch19-advanced-features/listing-19-08/src/main.rs}} ``` @@ -920,21 +922,19 @@ Static variables are similar to constants, which we discussed in the [“Differences Between Variables and Constants”][differences-between-variables-and-constants] Les variables statiques ressemblent aux constantes, que nous avons vu dans la section [“Différences entre les variables et les constantes”][differences-between-variables-and-constants] du chapitre 3. Les noms des variables statiques sont par convention en -`SCREAMING_SNAKE_CASE`, et nous *devons* obligatoirement renseigner le type de -la variable, qui est `&'static str` dans cet exemple. Les variables statiques +`SCREAMING_SNAKE_CASE`. Les variables statiques peuvent uniquement stocker des références avec la durée de vie `'static`, ce -qui signifie que le compilateur Rust peut comprendre sa durée de vie ; nous +qui signifie que le compilateur Rust peut comprendre sa durée de vie et nous n'avons pas besoin de la renseigner explicitement. L'accès à une variable statique immuable est sécurisé. @@ -970,12 +970,12 @@ lire et modifier la variable statique mutable `COMPTEUR`. Fichier : src/main.rs -```rust,unsafe +```rust {{#rustdoc_include ../listings/ch19-advanced-features/listing-19-10/src/main.rs}} ``` @@ -1025,27 +1025,27 @@ différentes tâches sont sécurisées. ### Implémenter un trait non sécurisé -La dernière action qui fonctionne uniquement avec `unsafe` est l'implémentation -d'un trait non sécurisé. Un trait n'est pas sécurisé lorsque au moins une de ses -méthodes contient une invariante que le compilateur ne peut pas vérifier. Nous -pouvons déclarer un trait qui n'est pas sécurisé en ajoutant le mot-clé `unsafe` -devant `trait` et en marquant aussi l'implémentation du trait comme `unsafe`, -comme dans l'encart 19-11. +Un autre cas d'emploi de `unsafe` est l'implémentation d'un trait non sécurisé. +Un trait n'est pas sécurisé lorsque au moins une de ses méthodes contient une +invariante que le compilateur ne peut pas vérifier. Nous pouvons déclarer un +trait qui n'est pas sécurisé en ajoutant le mot-clé `unsafe` devant `trait` et +en marquant aussi l'implémentation du trait comme `unsafe`, comme dans +l'encart 19-11. -```rust,unsafe +```rust {{#rustdoc_include ../listings/ch19-advanced-features/listing-19-11/src/main.rs}} ``` @@ -1097,19 +1097,21 @@ besoin de faire ces vérifications manuellement et les signaler avec `unsafe`. ### Utiliser des champs d'un Union -Un `union` ressemble à une `struct`, mais un seul champ de ceux déclarés est -utilisé dans une instance précise au même moment. Les unions sont principalement -utilisés pour s'interfacer avec les unions du code C. L'accès aux champs des -unions n'est pas sécurisé car Rust ne peut pas garantir le type de données qui -est actuellement stockée dans l'instance de l'union. Vous pouvez en apprendre -plus sur les unions dans [the reference][reference]. +La dernière action qui fonctionne uniquement avec `unsafe` est d'accéder aux +champs d'un *union*. Un `union` ressemble à une `struct`, mais un seul champ de +ceux déclarés est utilisé dans une instance précise au même moment. Les unions +sont principalement utilisés pour s'interfacer avec les unions du code C. +L'accès aux champs des unions n'est pas sécurisé car Rust ne peut pas garantir +le type de données qui est actuellement stockée dans l'instance de l'union. +Vous pouvez en apprendre plus sur les unions dans [the reference][reference]. src/main.rs:20:43 | -2 | fn nom_bebe() -> String; - | ------------------------ required by `Animal::nom_bebe` -... 20 | println!("Un bébé chien s'appelle un {}", Animal::nom_bebe()); | ^^^^^^^^^^^^^^^^ cannot infer type | - = note: cannot resolve `_: Animal` - -error: aborting due to previous error + = note: cannot satisfy `_: Animal` +note: required by `Animal::nom_bebe` + --> src/main.rs:2:5 + | +2 | fn nom_bebe() -> String; + | ^^^^^^^^^^^^^^^^^^^^^^^^ For more information about this error, try `rustc --explain E0283`. -error: could not compile `traits-example`. - -To learn more, run the command again with --verbose. +error: could not compile `traits-example` due to previous error \ No newline at end of file diff --git a/FRENCH/listings/ch19-advanced-features/listing-19-21/Cargo.toml b/FRENCH/listings/ch19-advanced-features/listing-19-21/Cargo.toml index 1e3df0242d..0fad0cdf04 100644 --- a/FRENCH/listings/ch19-advanced-features/listing-19-21/Cargo.toml +++ b/FRENCH/listings/ch19-advanced-features/listing-19-21/Cargo.toml @@ -1,7 +1,6 @@ [package] name = "traits-example" version = "0.1.0" -authors = ["Your Name "] edition = "2018" [dependencies] diff --git a/FRENCH/listings/ch19-advanced-features/listing-19-22/Cargo.toml b/FRENCH/listings/ch19-advanced-features/listing-19-22/Cargo.toml index 1e3df0242d..0fad0cdf04 100644 --- a/FRENCH/listings/ch19-advanced-features/listing-19-22/Cargo.toml +++ b/FRENCH/listings/ch19-advanced-features/listing-19-22/Cargo.toml @@ -1,7 +1,6 @@ [package] name = "traits-example" version = "0.1.0" -authors = ["Your Name "] edition = "2018" [dependencies] diff --git a/FRENCH/listings/ch19-advanced-features/listing-19-23/Cargo.toml b/FRENCH/listings/ch19-advanced-features/listing-19-23/Cargo.toml index 1e3df0242d..0fad0cdf04 100644 --- a/FRENCH/listings/ch19-advanced-features/listing-19-23/Cargo.toml +++ b/FRENCH/listings/ch19-advanced-features/listing-19-23/Cargo.toml @@ -1,7 +1,6 @@ [package] name = "traits-example" version = "0.1.0" -authors = ["Your Name "] edition = "2018" [dependencies] diff --git a/FRENCH/listings/ch19-advanced-features/no-listing-02-impl-outlineprint-for-point/Cargo.toml b/FRENCH/listings/ch19-advanced-features/no-listing-02-impl-outlineprint-for-point/Cargo.toml index 1e3df0242d..0fad0cdf04 100644 --- a/FRENCH/listings/ch19-advanced-features/no-listing-02-impl-outlineprint-for-point/Cargo.toml +++ b/FRENCH/listings/ch19-advanced-features/no-listing-02-impl-outlineprint-for-point/Cargo.toml @@ -1,7 +1,6 @@ [package] name = "traits-example" version = "0.1.0" -authors = ["Your Name "] edition = "2018" [dependencies] diff --git a/FRENCH/listings/ch19-advanced-features/no-listing-02-impl-outlineprint-for-point/output.txt b/FRENCH/listings/ch19-advanced-features/no-listing-02-impl-outlineprint-for-point/output.txt index e7a028e351..13a072365f 100644 --- a/FRENCH/listings/ch19-advanced-features/no-listing-02-impl-outlineprint-for-point/output.txt +++ b/FRENCH/listings/ch19-advanced-features/no-listing-02-impl-outlineprint-for-point/output.txt @@ -3,15 +3,14 @@ $ cargo run error[E0277]: `Point` doesn't implement `std::fmt::Display` --> src/main.rs:20:6 | +3 | trait OutlinePrint: fmt::Display { + | ------------ required by this bound in `OutlinePrint` +... 20 | impl OutlinePrint for Point {} | ^^^^^^^^^^^^ `Point` cannot be formatted with the default formatter | = help: the trait `std::fmt::Display` is not implemented for `Point` = note: in format strings you may be able to use `{:?}` (or {:#?} for pretty-print) instead -error: aborting due to previous error - For more information about this error, try `rustc --explain E0277`. -error: could not compile `traits-example`. - -To learn more, run the command again with --verbose. +error: could not compile `traits-example` due to previous error \ No newline at end of file diff --git a/FRENCH/listings/ch19-advanced-features/no-listing-03-impl-display-for-point/Cargo.toml b/FRENCH/listings/ch19-advanced-features/no-listing-03-impl-display-for-point/Cargo.toml index 1e3df0242d..0fad0cdf04 100644 --- a/FRENCH/listings/ch19-advanced-features/no-listing-03-impl-display-for-point/Cargo.toml +++ b/FRENCH/listings/ch19-advanced-features/no-listing-03-impl-display-for-point/Cargo.toml @@ -1,7 +1,6 @@ [package] name = "traits-example" version = "0.1.0" -authors = ["Your Name "] edition = "2018" [dependencies] diff --git a/FRENCH/src/ch19-03-advanced-traits.md b/FRENCH/src/ch19-03-advanced-traits.md index 09ca9fc3c9..0e92b5262c 100644 --- a/FRENCH/src/ch19-03-advanced-traits.md +++ b/FRENCH/src/ch19-03-advanced-traits.md @@ -68,12 +68,12 @@ section du chapitre 13, nous avons mentionné que la définition du trait `Iterator` ressemblait à cet encart 19-12. -```rust +```rust,noplayground {{#rustdoc_include ../listings/ch19-advanced-features/listing-19-12/src/lib.rs}} ``` @@ -143,12 +143,12 @@ Cette syntaxe ressemble aux génériques. Donc pourquoi uniquement définir le trait `Iterator` avec les génériques, comme dans l'encart 19-13 ? -```rust +```rust,noplayground {{#rustdoc_include ../listings/ch19-advanced-features/listing-19-13/src/lib.rs}} ``` @@ -339,16 +339,23 @@ personnaliser le type `Rhs` plutôt que d'utiliser celui par défaut. Nous avons deux structures, `Millimetres` et `Metres`, qui stockent des valeurs -dans différentes unités. Nous voulons pouvoir additionner les valeurs en +dans différentes unités. Ce léger enrobage d'un type existant dans une autre +structure s'appelle le *motif newtype*, que nous décrivons plus en détail dans +la section [Utiliser le motif newtype pour la sécurité et l'abstraction des +types][newtype]. Nous voulons pouvoir additionner les valeurs en millimètres avec les valeurs en mètres et appliquer l'implémentation de `Add` pour pouvoir faire la conversion correctement. Nous pouvons implémenter `Add` -sur `Millimetres` avec `Metres` comme étant le `Rhs`, comme dans l'encart 19-15. +sur `Millimetres` avec `Metres` comme étant le `Rhs`, comme dans l'encart +19-15. -```rust +```rust,noplayground {{#rustdoc_include ../listings/ch19-advanced-features/listing-19-15/src/lib.rs}} ``` @@ -831,13 +838,14 @@ implementation you want to call. --> Pour les fonctions associées, il n'y a pas de `destinataire` : il n'y a qu'une -liste d'arguments. Vous pouvez utiliser la syntaxe totalement définie à n'importe -quel endroit où vous faites appel à des fonctions ou des méthodes. Cependant, vous pouvez -éviter de renseigner n'importe quelle partie de cette syntaxe que Rust peut -déduire à partir d'autres informations présentes dans le code. Vous avez -seulement besoin d'utiliser cette syntaxe plus verbeuse dans les cas où il y a -plusieurs implémentations qui utilisent le même nom et que Rust doit être aidé -pour identifier quelle implémentation vous souhaitez appeler. +liste d'arguments. Vous pouvez utiliser la syntaxe totalement définie à +n'importe quel endroit où vous faites appel à des fonctions ou des méthodes. +Cependant, vous pouvez éviter de renseigner n'importe quelle partie de cette +syntaxe que Rust peut déduire à partir d'autres informations présentes dans le +code. Vous avez seulement besoin d'utiliser cette syntaxe plus verbeuse dans +les cas où il y a plusieurs implémentations qui utilisent le même nom et que +Rust doit être aidé pour identifier quelle implémentation vous souhaitez +appeler. +[newtype]: +ch19-04-advanced-types.html#utiliser-le-motif-newtype-pour-la-sécurité-et-labstraction-des-types [implementing-a-trait-on-a-type]: ch10-02-traits.html [the-iterator-trait-and-the-next-method]: ch13-02-iterators.html [traits-defining-shared-behavior]: ch10-02-traits.html diff --git a/FRENCH/src/translation-terms.md b/FRENCH/src/translation-terms.md index 56f369c2cb..eb82c6d68a 100644 --- a/FRENCH/src/translation-terms.md +++ b/FRENCH/src/translation-terms.md @@ -169,6 +169,7 @@ français. | namespace | espace de nom | - | | namespacing | l'espace de nom | - | | nested (path) | (chemin) imbriqué | - | +| newtype pattern | motif newtype | - | | nightly Rust | version expérimentale de Rust | - | | Note | remarque | tout en minuscule (sauf en début de phrase) | | numerical characters | chiffres | - | From 7896fe69582ca42d9f2bc88c2f87269e278687f9 Mon Sep 17 00:00:00 2001 From: Jimskapt Date: Sat, 20 Nov 2021 19:16:16 +0100 Subject: [PATCH 59/64] =?UTF-8?q?=20=E2=99=BB=EF=B8=8F=20Update=20translat?= =?UTF-8?q?ion=20on=20ch19-04.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../listing-19-24/Cargo.toml | 1 - .../listing-19-25/Cargo.toml | 1 - .../no-listing-04-kilometers-alias/Cargo.toml | 1 - .../no-listing-05-write-trait/Cargo.toml | 1 - .../no-listing-06-result-alias/Cargo.toml | 1 - .../no-listing-06-result-alias/src/lib.rs | 2 - .../no-listing-07-never-type/Cargo.toml | 1 - .../no-listing-07-never-type/src/lib.rs | 2 - .../Cargo.toml | 1 - .../Cargo.toml | 1 - .../Cargo.toml | 1 - .../no-listing-11-cant-create-str/Cargo.toml | 1 - .../Cargo.toml | 1 - .../Cargo.toml | 1 - .../Cargo.toml | 1 - .../listing-19-24/Cargo.toml | 1 - .../listing-19-25/Cargo.toml | 1 - .../no-listing-04-kilometers-alias/Cargo.toml | 1 - .../no-listing-05-write-trait/Cargo.toml | 1 - .../no-listing-06-result-alias/Cargo.toml | 1 - .../no-listing-06-result-alias/src/lib.rs | 2 - .../no-listing-07-never-type/Cargo.toml | 1 - .../no-listing-07-never-type/src/lib.rs | 2 - .../Cargo.toml | 1 - .../Cargo.toml | 1 - .../Cargo.toml | 1 - .../no-listing-11-cant-create-str/Cargo.toml | 1 - .../Cargo.toml | 1 - .../Cargo.toml | 1 - .../Cargo.toml | 1 - FRENCH/src/ch19-04-advanced-types.md | 51 ++++++++++--------- 31 files changed, 26 insertions(+), 59 deletions(-) diff --git a/FRENCH/listings-sources/ch19-advanced-features/listing-19-24/Cargo.toml b/FRENCH/listings-sources/ch19-advanced-features/listing-19-24/Cargo.toml index 9b4ee689bf..ce5f9eadc2 100644 --- a/FRENCH/listings-sources/ch19-advanced-features/listing-19-24/Cargo.toml +++ b/FRENCH/listings-sources/ch19-advanced-features/listing-19-24/Cargo.toml @@ -1,7 +1,6 @@ [package] name = "types-example" version = "0.1.0" -authors = ["Your Name "] edition = "2018" [dependencies] diff --git a/FRENCH/listings-sources/ch19-advanced-features/listing-19-25/Cargo.toml b/FRENCH/listings-sources/ch19-advanced-features/listing-19-25/Cargo.toml index 9b4ee689bf..ce5f9eadc2 100644 --- a/FRENCH/listings-sources/ch19-advanced-features/listing-19-25/Cargo.toml +++ b/FRENCH/listings-sources/ch19-advanced-features/listing-19-25/Cargo.toml @@ -1,7 +1,6 @@ [package] name = "types-example" version = "0.1.0" -authors = ["Your Name "] edition = "2018" [dependencies] diff --git a/FRENCH/listings-sources/ch19-advanced-features/no-listing-04-kilometers-alias/Cargo.toml b/FRENCH/listings-sources/ch19-advanced-features/no-listing-04-kilometers-alias/Cargo.toml index 9b4ee689bf..ce5f9eadc2 100644 --- a/FRENCH/listings-sources/ch19-advanced-features/no-listing-04-kilometers-alias/Cargo.toml +++ b/FRENCH/listings-sources/ch19-advanced-features/no-listing-04-kilometers-alias/Cargo.toml @@ -1,7 +1,6 @@ [package] name = "types-example" version = "0.1.0" -authors = ["Your Name "] edition = "2018" [dependencies] diff --git a/FRENCH/listings-sources/ch19-advanced-features/no-listing-05-write-trait/Cargo.toml b/FRENCH/listings-sources/ch19-advanced-features/no-listing-05-write-trait/Cargo.toml index 1e3df0242d..0fad0cdf04 100644 --- a/FRENCH/listings-sources/ch19-advanced-features/no-listing-05-write-trait/Cargo.toml +++ b/FRENCH/listings-sources/ch19-advanced-features/no-listing-05-write-trait/Cargo.toml @@ -1,7 +1,6 @@ [package] name = "traits-example" version = "0.1.0" -authors = ["Your Name "] edition = "2018" [dependencies] diff --git a/FRENCH/listings-sources/ch19-advanced-features/no-listing-06-result-alias/Cargo.toml b/FRENCH/listings-sources/ch19-advanced-features/no-listing-06-result-alias/Cargo.toml index 1e3df0242d..0fad0cdf04 100644 --- a/FRENCH/listings-sources/ch19-advanced-features/no-listing-06-result-alias/Cargo.toml +++ b/FRENCH/listings-sources/ch19-advanced-features/no-listing-06-result-alias/Cargo.toml @@ -1,7 +1,6 @@ [package] name = "traits-example" version = "0.1.0" -authors = ["Your Name "] edition = "2018" [dependencies] diff --git a/FRENCH/listings-sources/ch19-advanced-features/no-listing-06-result-alias/src/lib.rs b/FRENCH/listings-sources/ch19-advanced-features/no-listing-06-result-alias/src/lib.rs index c53a927e32..5735599348 100644 --- a/FRENCH/listings-sources/ch19-advanced-features/no-listing-06-result-alias/src/lib.rs +++ b/FRENCH/listings-sources/ch19-advanced-features/no-listing-06-result-alias/src/lib.rs @@ -13,5 +13,3 @@ pub trait Write { fn write_fmt(&mut self, fmt: fmt::Arguments) -> Result<()>; } // ANCHOR_END: there - -fn main() {} diff --git a/FRENCH/listings-sources/ch19-advanced-features/no-listing-07-never-type/Cargo.toml b/FRENCH/listings-sources/ch19-advanced-features/no-listing-07-never-type/Cargo.toml index 1e3df0242d..0fad0cdf04 100644 --- a/FRENCH/listings-sources/ch19-advanced-features/no-listing-07-never-type/Cargo.toml +++ b/FRENCH/listings-sources/ch19-advanced-features/no-listing-07-never-type/Cargo.toml @@ -1,7 +1,6 @@ [package] name = "traits-example" version = "0.1.0" -authors = ["Your Name "] edition = "2018" [dependencies] diff --git a/FRENCH/listings-sources/ch19-advanced-features/no-listing-07-never-type/src/lib.rs b/FRENCH/listings-sources/ch19-advanced-features/no-listing-07-never-type/src/lib.rs index 236224186e..f0f7acac24 100644 --- a/FRENCH/listings-sources/ch19-advanced-features/no-listing-07-never-type/src/lib.rs +++ b/FRENCH/listings-sources/ch19-advanced-features/no-listing-07-never-type/src/lib.rs @@ -6,5 +6,3 @@ fn bar() -> ! { // ANCHOR: here } // ANCHOR_END: here - -fn main() {} diff --git a/FRENCH/listings-sources/ch19-advanced-features/no-listing-08-match-arms-different-types/Cargo.toml b/FRENCH/listings-sources/ch19-advanced-features/no-listing-08-match-arms-different-types/Cargo.toml index 9b4ee689bf..ce5f9eadc2 100644 --- a/FRENCH/listings-sources/ch19-advanced-features/no-listing-08-match-arms-different-types/Cargo.toml +++ b/FRENCH/listings-sources/ch19-advanced-features/no-listing-08-match-arms-different-types/Cargo.toml @@ -1,7 +1,6 @@ [package] name = "types-example" version = "0.1.0" -authors = ["Your Name "] edition = "2018" [dependencies] diff --git a/FRENCH/listings-sources/ch19-advanced-features/no-listing-09-unwrap-definition/Cargo.toml b/FRENCH/listings-sources/ch19-advanced-features/no-listing-09-unwrap-definition/Cargo.toml index 9b4ee689bf..ce5f9eadc2 100644 --- a/FRENCH/listings-sources/ch19-advanced-features/no-listing-09-unwrap-definition/Cargo.toml +++ b/FRENCH/listings-sources/ch19-advanced-features/no-listing-09-unwrap-definition/Cargo.toml @@ -1,7 +1,6 @@ [package] name = "types-example" version = "0.1.0" -authors = ["Your Name "] edition = "2018" [dependencies] diff --git a/FRENCH/listings-sources/ch19-advanced-features/no-listing-10-loop-returns-never/Cargo.toml b/FRENCH/listings-sources/ch19-advanced-features/no-listing-10-loop-returns-never/Cargo.toml index 9b4ee689bf..ce5f9eadc2 100644 --- a/FRENCH/listings-sources/ch19-advanced-features/no-listing-10-loop-returns-never/Cargo.toml +++ b/FRENCH/listings-sources/ch19-advanced-features/no-listing-10-loop-returns-never/Cargo.toml @@ -1,7 +1,6 @@ [package] name = "types-example" version = "0.1.0" -authors = ["Your Name "] edition = "2018" [dependencies] diff --git a/FRENCH/listings-sources/ch19-advanced-features/no-listing-11-cant-create-str/Cargo.toml b/FRENCH/listings-sources/ch19-advanced-features/no-listing-11-cant-create-str/Cargo.toml index 9b4ee689bf..ce5f9eadc2 100644 --- a/FRENCH/listings-sources/ch19-advanced-features/no-listing-11-cant-create-str/Cargo.toml +++ b/FRENCH/listings-sources/ch19-advanced-features/no-listing-11-cant-create-str/Cargo.toml @@ -1,7 +1,6 @@ [package] name = "types-example" version = "0.1.0" -authors = ["Your Name "] edition = "2018" [dependencies] diff --git a/FRENCH/listings-sources/ch19-advanced-features/no-listing-12-generic-fn-definition/Cargo.toml b/FRENCH/listings-sources/ch19-advanced-features/no-listing-12-generic-fn-definition/Cargo.toml index 9b4ee689bf..ce5f9eadc2 100644 --- a/FRENCH/listings-sources/ch19-advanced-features/no-listing-12-generic-fn-definition/Cargo.toml +++ b/FRENCH/listings-sources/ch19-advanced-features/no-listing-12-generic-fn-definition/Cargo.toml @@ -1,7 +1,6 @@ [package] name = "types-example" version = "0.1.0" -authors = ["Your Name "] edition = "2018" [dependencies] diff --git a/FRENCH/listings-sources/ch19-advanced-features/no-listing-13-generic-implicit-sized-bound/Cargo.toml b/FRENCH/listings-sources/ch19-advanced-features/no-listing-13-generic-implicit-sized-bound/Cargo.toml index 9b4ee689bf..ce5f9eadc2 100644 --- a/FRENCH/listings-sources/ch19-advanced-features/no-listing-13-generic-implicit-sized-bound/Cargo.toml +++ b/FRENCH/listings-sources/ch19-advanced-features/no-listing-13-generic-implicit-sized-bound/Cargo.toml @@ -1,7 +1,6 @@ [package] name = "types-example" version = "0.1.0" -authors = ["Your Name "] edition = "2018" [dependencies] diff --git a/FRENCH/listings-sources/ch19-advanced-features/no-listing-14-generic-maybe-sized/Cargo.toml b/FRENCH/listings-sources/ch19-advanced-features/no-listing-14-generic-maybe-sized/Cargo.toml index 9b4ee689bf..ce5f9eadc2 100644 --- a/FRENCH/listings-sources/ch19-advanced-features/no-listing-14-generic-maybe-sized/Cargo.toml +++ b/FRENCH/listings-sources/ch19-advanced-features/no-listing-14-generic-maybe-sized/Cargo.toml @@ -1,7 +1,6 @@ [package] name = "types-example" version = "0.1.0" -authors = ["Your Name "] edition = "2018" [dependencies] diff --git a/FRENCH/listings/ch19-advanced-features/listing-19-24/Cargo.toml b/FRENCH/listings/ch19-advanced-features/listing-19-24/Cargo.toml index 9b4ee689bf..ce5f9eadc2 100644 --- a/FRENCH/listings/ch19-advanced-features/listing-19-24/Cargo.toml +++ b/FRENCH/listings/ch19-advanced-features/listing-19-24/Cargo.toml @@ -1,7 +1,6 @@ [package] name = "types-example" version = "0.1.0" -authors = ["Your Name "] edition = "2018" [dependencies] diff --git a/FRENCH/listings/ch19-advanced-features/listing-19-25/Cargo.toml b/FRENCH/listings/ch19-advanced-features/listing-19-25/Cargo.toml index 9b4ee689bf..ce5f9eadc2 100644 --- a/FRENCH/listings/ch19-advanced-features/listing-19-25/Cargo.toml +++ b/FRENCH/listings/ch19-advanced-features/listing-19-25/Cargo.toml @@ -1,7 +1,6 @@ [package] name = "types-example" version = "0.1.0" -authors = ["Your Name "] edition = "2018" [dependencies] diff --git a/FRENCH/listings/ch19-advanced-features/no-listing-04-kilometers-alias/Cargo.toml b/FRENCH/listings/ch19-advanced-features/no-listing-04-kilometers-alias/Cargo.toml index 9b4ee689bf..ce5f9eadc2 100644 --- a/FRENCH/listings/ch19-advanced-features/no-listing-04-kilometers-alias/Cargo.toml +++ b/FRENCH/listings/ch19-advanced-features/no-listing-04-kilometers-alias/Cargo.toml @@ -1,7 +1,6 @@ [package] name = "types-example" version = "0.1.0" -authors = ["Your Name "] edition = "2018" [dependencies] diff --git a/FRENCH/listings/ch19-advanced-features/no-listing-05-write-trait/Cargo.toml b/FRENCH/listings/ch19-advanced-features/no-listing-05-write-trait/Cargo.toml index 1e3df0242d..0fad0cdf04 100644 --- a/FRENCH/listings/ch19-advanced-features/no-listing-05-write-trait/Cargo.toml +++ b/FRENCH/listings/ch19-advanced-features/no-listing-05-write-trait/Cargo.toml @@ -1,7 +1,6 @@ [package] name = "traits-example" version = "0.1.0" -authors = ["Your Name "] edition = "2018" [dependencies] diff --git a/FRENCH/listings/ch19-advanced-features/no-listing-06-result-alias/Cargo.toml b/FRENCH/listings/ch19-advanced-features/no-listing-06-result-alias/Cargo.toml index 1e3df0242d..0fad0cdf04 100644 --- a/FRENCH/listings/ch19-advanced-features/no-listing-06-result-alias/Cargo.toml +++ b/FRENCH/listings/ch19-advanced-features/no-listing-06-result-alias/Cargo.toml @@ -1,7 +1,6 @@ [package] name = "traits-example" version = "0.1.0" -authors = ["Your Name "] edition = "2018" [dependencies] diff --git a/FRENCH/listings/ch19-advanced-features/no-listing-06-result-alias/src/lib.rs b/FRENCH/listings/ch19-advanced-features/no-listing-06-result-alias/src/lib.rs index c53a927e32..5735599348 100644 --- a/FRENCH/listings/ch19-advanced-features/no-listing-06-result-alias/src/lib.rs +++ b/FRENCH/listings/ch19-advanced-features/no-listing-06-result-alias/src/lib.rs @@ -13,5 +13,3 @@ pub trait Write { fn write_fmt(&mut self, fmt: fmt::Arguments) -> Result<()>; } // ANCHOR_END: there - -fn main() {} diff --git a/FRENCH/listings/ch19-advanced-features/no-listing-07-never-type/Cargo.toml b/FRENCH/listings/ch19-advanced-features/no-listing-07-never-type/Cargo.toml index 1e3df0242d..0fad0cdf04 100644 --- a/FRENCH/listings/ch19-advanced-features/no-listing-07-never-type/Cargo.toml +++ b/FRENCH/listings/ch19-advanced-features/no-listing-07-never-type/Cargo.toml @@ -1,7 +1,6 @@ [package] name = "traits-example" version = "0.1.0" -authors = ["Your Name "] edition = "2018" [dependencies] diff --git a/FRENCH/listings/ch19-advanced-features/no-listing-07-never-type/src/lib.rs b/FRENCH/listings/ch19-advanced-features/no-listing-07-never-type/src/lib.rs index 46601f3afb..e529219b8c 100644 --- a/FRENCH/listings/ch19-advanced-features/no-listing-07-never-type/src/lib.rs +++ b/FRENCH/listings/ch19-advanced-features/no-listing-07-never-type/src/lib.rs @@ -6,5 +6,3 @@ fn bar() -> ! { // ANCHOR: here } // ANCHOR_END: here - -fn main() {} diff --git a/FRENCH/listings/ch19-advanced-features/no-listing-08-match-arms-different-types/Cargo.toml b/FRENCH/listings/ch19-advanced-features/no-listing-08-match-arms-different-types/Cargo.toml index 9b4ee689bf..ce5f9eadc2 100644 --- a/FRENCH/listings/ch19-advanced-features/no-listing-08-match-arms-different-types/Cargo.toml +++ b/FRENCH/listings/ch19-advanced-features/no-listing-08-match-arms-different-types/Cargo.toml @@ -1,7 +1,6 @@ [package] name = "types-example" version = "0.1.0" -authors = ["Your Name "] edition = "2018" [dependencies] diff --git a/FRENCH/listings/ch19-advanced-features/no-listing-09-unwrap-definition/Cargo.toml b/FRENCH/listings/ch19-advanced-features/no-listing-09-unwrap-definition/Cargo.toml index 9b4ee689bf..ce5f9eadc2 100644 --- a/FRENCH/listings/ch19-advanced-features/no-listing-09-unwrap-definition/Cargo.toml +++ b/FRENCH/listings/ch19-advanced-features/no-listing-09-unwrap-definition/Cargo.toml @@ -1,7 +1,6 @@ [package] name = "types-example" version = "0.1.0" -authors = ["Your Name "] edition = "2018" [dependencies] diff --git a/FRENCH/listings/ch19-advanced-features/no-listing-10-loop-returns-never/Cargo.toml b/FRENCH/listings/ch19-advanced-features/no-listing-10-loop-returns-never/Cargo.toml index 9b4ee689bf..ce5f9eadc2 100644 --- a/FRENCH/listings/ch19-advanced-features/no-listing-10-loop-returns-never/Cargo.toml +++ b/FRENCH/listings/ch19-advanced-features/no-listing-10-loop-returns-never/Cargo.toml @@ -1,7 +1,6 @@ [package] name = "types-example" version = "0.1.0" -authors = ["Your Name "] edition = "2018" [dependencies] diff --git a/FRENCH/listings/ch19-advanced-features/no-listing-11-cant-create-str/Cargo.toml b/FRENCH/listings/ch19-advanced-features/no-listing-11-cant-create-str/Cargo.toml index 9b4ee689bf..ce5f9eadc2 100644 --- a/FRENCH/listings/ch19-advanced-features/no-listing-11-cant-create-str/Cargo.toml +++ b/FRENCH/listings/ch19-advanced-features/no-listing-11-cant-create-str/Cargo.toml @@ -1,7 +1,6 @@ [package] name = "types-example" version = "0.1.0" -authors = ["Your Name "] edition = "2018" [dependencies] diff --git a/FRENCH/listings/ch19-advanced-features/no-listing-12-generic-fn-definition/Cargo.toml b/FRENCH/listings/ch19-advanced-features/no-listing-12-generic-fn-definition/Cargo.toml index 9b4ee689bf..ce5f9eadc2 100644 --- a/FRENCH/listings/ch19-advanced-features/no-listing-12-generic-fn-definition/Cargo.toml +++ b/FRENCH/listings/ch19-advanced-features/no-listing-12-generic-fn-definition/Cargo.toml @@ -1,7 +1,6 @@ [package] name = "types-example" version = "0.1.0" -authors = ["Your Name "] edition = "2018" [dependencies] diff --git a/FRENCH/listings/ch19-advanced-features/no-listing-13-generic-implicit-sized-bound/Cargo.toml b/FRENCH/listings/ch19-advanced-features/no-listing-13-generic-implicit-sized-bound/Cargo.toml index 9b4ee689bf..ce5f9eadc2 100644 --- a/FRENCH/listings/ch19-advanced-features/no-listing-13-generic-implicit-sized-bound/Cargo.toml +++ b/FRENCH/listings/ch19-advanced-features/no-listing-13-generic-implicit-sized-bound/Cargo.toml @@ -1,7 +1,6 @@ [package] name = "types-example" version = "0.1.0" -authors = ["Your Name "] edition = "2018" [dependencies] diff --git a/FRENCH/listings/ch19-advanced-features/no-listing-14-generic-maybe-sized/Cargo.toml b/FRENCH/listings/ch19-advanced-features/no-listing-14-generic-maybe-sized/Cargo.toml index 9b4ee689bf..ce5f9eadc2 100644 --- a/FRENCH/listings/ch19-advanced-features/no-listing-14-generic-maybe-sized/Cargo.toml +++ b/FRENCH/listings/ch19-advanced-features/no-listing-14-generic-maybe-sized/Cargo.toml @@ -1,7 +1,6 @@ [package] name = "types-example" version = "0.1.0" -authors = ["Your Name "] edition = "2018" [dependencies] diff --git a/FRENCH/src/ch19-04-advanced-types.md b/FRENCH/src/ch19-04-advanced-types.md index d6d528af84..555470494a 100644 --- a/FRENCH/src/ch19-04-advanced-types.md +++ b/FRENCH/src/ch19-04-advanced-types.md @@ -21,19 +21,19 @@ différences sémantiques. Nous allons aussi voir le type `!` et les types à taille dynamique. -> Remarque : cette section suppose que vous avez lu la -> [section précédente][using-the-newtype-pattern] +### Utiliser le motif newtype pour la sécurité et l'abstraction des types -### Utiliser le motif newtype pour la sécurité et l'abstraction des types +> Remarque : cette section suppose que vous avez lu la +> [section précédente][using-the-newtype-pattern] -```rust +```rust,noplayground {{#rustdoc_include ../listings/ch19-advanced-features/no-listing-05-write-trait/src/lib.rs}} ``` -Le `Result<..., Error>` est répété plein de fois. Ainsi, `std::io` a ce type de -déclaration d'alias : +Le `Result<..., Error>` est répété plein de fois. Ainsi, `std::io` a cette +déclaration d'alias de type : -```rust +```rust,noplayground {{#rustdoc_include ../listings/ch19-advanced-features/no-listing-06-result-alias/src/lib.rs:here}} ``` @@ -300,12 +300,12 @@ déjà renseigné comme étant un `std::io::Error`. Les fonctions du trait `Writ ressemblent finalement à ceci : -```rust +```rust,noplayground {{#rustdoc_include ../listings/ch19-advanced-features/no-listing-06-result-alias/src/lib.rs:there}} ``` @@ -341,16 +341,15 @@ préférons appeler cela le *type jamais* car il remplace le type de retour lorsqu'une fonction ne va jamais retourner quelque chose. Voici un exemple : -```rust +```rust,noplayground {{#rustdoc_include ../listings/ch19-advanced-features/no-listing-07-never-type/src/lib.rs:here}} ``` - -Le trait lié `?Sized` est l'opposé du trait lié `Sized` : nous pourrions lire -ceci comme étant “`T` peut être ou non un `Sized`”. Cette syntaxe est disponible -uniquement pour `Sized`, et non pas pour les autres traits. +Le trait lié `?Sized` signifie que “`T` peut être ou ne pas être `Sized`” et +cette notation prévaut sur le comportement par défaut qui dit que les types +génériques doivent avoir une taille connue au moment de la compilation. La +syntaxe `?Trait` avec ce comportement n'est seulement disponible pour `Sized`, +et non pas pour les autres traits. src/lib.rs:1:25 | 1 | fn retourne_une_fermeture() -> dyn Fn(i32) -> i32 { | ^^^^^^^^^^^^^^^^^^ doesn't have a size known at compile-time | - = help: the trait `std::marker::Sized` is not implemented for `(dyn std::ops::Fn(i32) -> i32 + 'static)` - = note: to learn more, visit - = note: the return type of a function must have a statically known size - -error[E0308]: mismatched types - --> src/lib.rs:2:5 + = note: for information on `impl Trait`, see +help: use `impl Fn(i32) -> i32` as the return type, as all return paths are of type `[closure@src/lib.rs:2:5: 2:14]`, which implements `Fn(i32) -> i32` | 1 | fn retourne_une_fermeture() -> dyn Fn(i32) -> i32 { | ------------------ expected `(dyn std::ops::Fn(i32) -> i32 + 'static)` because of return type @@ -21,10 +17,5 @@ error[E0308]: mismatched types = note: expected trait object `(dyn std::ops::Fn(i32) -> i32 + 'static)` found closure `[closure@src/lib.rs:2:5: 2:14]` -error: aborting due to 2 previous errors - -Some errors have detailed explanations: E0277, E0308. -For more information about an error, try `rustc --explain E0277`. -error: could not compile `functions-example`. - -To learn more, run the command again with --verbose. +For more information about this error, try `rustc --explain E0746`. +error: could not compile `functions-example` due to previous error \ No newline at end of file diff --git a/FRENCH/listings/ch19-advanced-features/no-listing-19-returns-closure-trait-object/Cargo.toml b/FRENCH/listings/ch19-advanced-features/no-listing-19-returns-closure-trait-object/Cargo.toml index 2bed56c367..51b8b14f99 100644 --- a/FRENCH/listings/ch19-advanced-features/no-listing-19-returns-closure-trait-object/Cargo.toml +++ b/FRENCH/listings/ch19-advanced-features/no-listing-19-returns-closure-trait-object/Cargo.toml @@ -1,7 +1,6 @@ [package] name = "functions-example" version = "0.1.0" -authors = ["Your Name "] edition = "2018" [dependencies] diff --git a/FRENCH/src/ch19-05-advanced-functions-and-closures.md b/FRENCH/src/ch19-05-advanced-functions-and-closures.md index d207f1777f..b30ade5e42 100644 --- a/FRENCH/src/ch19-05-advanced-functions-and-closures.md +++ b/FRENCH/src/ch19-05-advanced-functions-and-closures.md @@ -278,12 +278,12 @@ nécessaire pour stocker la fermeture. Nous avons vu une solution à ce problèm précédemment. Nous pouvons utiliser un objet trait : -```rust +```rust,noplayground {{#rustdoc_include ../listings/ch19-advanced-features/no-listing-19-returns-closure-trait-object/src/lib.rs}} ``` From 0072858b1bbcf47bdf683a2a23acc351e0e2c10b Mon Sep 17 00:00:00 2001 From: Jimskapt Date: Sun, 21 Nov 2021 11:33:05 +0100 Subject: [PATCH 61/64] =?UTF-8?q?=E2=99=BB=EF=B8=8F=20Update=20translation?= =?UTF-8?q?=20on=20ch19-06.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../listing-19-28/Cargo.toml | 1 - .../listing-19-30/Cargo.toml | 1 - .../listing-19-31/hello_macro/Cargo.toml | 1 - .../hello_macro/hello_macro_derive/Cargo.toml | 1 - .../listing-19-33/hello_macro/Cargo.toml | 1 - .../hello_macro/hello_macro_derive/Cargo.toml | 1 - .../hello_macro/Cargo.toml | 1 - .../pancakes/Cargo.toml | 1 - .../hello_macro/Cargo.toml | 1 - .../hello_macro/hello_macro_derive/Cargo.toml | 1 - .../pancakes/Cargo.toml | 1 - .../listing-19-28/Cargo.toml | 1 - .../listing-19-30/Cargo.toml | 1 - .../listing-19-31/hello_macro/Cargo.toml | 1 - .../hello_macro/hello_macro_derive/Cargo.toml | 1 - .../listing-19-33/hello_macro/Cargo.toml | 1 - .../hello_macro/hello_macro_derive/Cargo.toml | 1 - .../hello_macro/Cargo.toml | 1 - .../pancakes/Cargo.toml | 1 - .../hello_macro/Cargo.toml | 1 - .../hello_macro/hello_macro_derive/Cargo.toml | 1 - .../pancakes/Cargo.toml | 1 - FRENCH/src/ch19-06-macros.md | 21 ++++++++++--------- 23 files changed, 11 insertions(+), 32 deletions(-) diff --git a/FRENCH/listings-sources/ch19-advanced-features/listing-19-28/Cargo.toml b/FRENCH/listings-sources/ch19-advanced-features/listing-19-28/Cargo.toml index 1829b0fa66..b9af9c6d62 100644 --- a/FRENCH/listings-sources/ch19-advanced-features/listing-19-28/Cargo.toml +++ b/FRENCH/listings-sources/ch19-advanced-features/listing-19-28/Cargo.toml @@ -1,7 +1,6 @@ [package] name = "macros-example" version = "0.1.0" -authors = ["Your Name "] edition = "2018" [dependencies] diff --git a/FRENCH/listings-sources/ch19-advanced-features/listing-19-30/Cargo.toml b/FRENCH/listings-sources/ch19-advanced-features/listing-19-30/Cargo.toml index 5a93a685c0..4c4e6f898b 100644 --- a/FRENCH/listings-sources/ch19-advanced-features/listing-19-30/Cargo.toml +++ b/FRENCH/listings-sources/ch19-advanced-features/listing-19-30/Cargo.toml @@ -1,7 +1,6 @@ [package] name = "hello_macro" version = "0.1.0" -authors = ["Your Name "] edition = "2018" [dependencies] diff --git a/FRENCH/listings-sources/ch19-advanced-features/listing-19-31/hello_macro/Cargo.toml b/FRENCH/listings-sources/ch19-advanced-features/listing-19-31/hello_macro/Cargo.toml index 5a93a685c0..4c4e6f898b 100644 --- a/FRENCH/listings-sources/ch19-advanced-features/listing-19-31/hello_macro/Cargo.toml +++ b/FRENCH/listings-sources/ch19-advanced-features/listing-19-31/hello_macro/Cargo.toml @@ -1,7 +1,6 @@ [package] name = "hello_macro" version = "0.1.0" -authors = ["Your Name "] edition = "2018" [dependencies] diff --git a/FRENCH/listings-sources/ch19-advanced-features/listing-19-31/hello_macro/hello_macro_derive/Cargo.toml b/FRENCH/listings-sources/ch19-advanced-features/listing-19-31/hello_macro/hello_macro_derive/Cargo.toml index 168cbae53c..80cada3ef0 100644 --- a/FRENCH/listings-sources/ch19-advanced-features/listing-19-31/hello_macro/hello_macro_derive/Cargo.toml +++ b/FRENCH/listings-sources/ch19-advanced-features/listing-19-31/hello_macro/hello_macro_derive/Cargo.toml @@ -1,7 +1,6 @@ [package] name = "hello_macro_derive" version = "0.1.0" -authors = ["Your Name "] edition = "2018" [lib] diff --git a/FRENCH/listings-sources/ch19-advanced-features/listing-19-33/hello_macro/Cargo.toml b/FRENCH/listings-sources/ch19-advanced-features/listing-19-33/hello_macro/Cargo.toml index 5a93a685c0..4c4e6f898b 100644 --- a/FRENCH/listings-sources/ch19-advanced-features/listing-19-33/hello_macro/Cargo.toml +++ b/FRENCH/listings-sources/ch19-advanced-features/listing-19-33/hello_macro/Cargo.toml @@ -1,7 +1,6 @@ [package] name = "hello_macro" version = "0.1.0" -authors = ["Your Name "] edition = "2018" [dependencies] diff --git a/FRENCH/listings-sources/ch19-advanced-features/listing-19-33/hello_macro/hello_macro_derive/Cargo.toml b/FRENCH/listings-sources/ch19-advanced-features/listing-19-33/hello_macro/hello_macro_derive/Cargo.toml index 168cbae53c..80cada3ef0 100644 --- a/FRENCH/listings-sources/ch19-advanced-features/listing-19-33/hello_macro/hello_macro_derive/Cargo.toml +++ b/FRENCH/listings-sources/ch19-advanced-features/listing-19-33/hello_macro/hello_macro_derive/Cargo.toml @@ -1,7 +1,6 @@ [package] name = "hello_macro_derive" version = "0.1.0" -authors = ["Your Name "] edition = "2018" [lib] diff --git a/FRENCH/listings-sources/ch19-advanced-features/no-listing-20-impl-hellomacro-for-pancakes/hello_macro/Cargo.toml b/FRENCH/listings-sources/ch19-advanced-features/no-listing-20-impl-hellomacro-for-pancakes/hello_macro/Cargo.toml index 5a93a685c0..4c4e6f898b 100644 --- a/FRENCH/listings-sources/ch19-advanced-features/no-listing-20-impl-hellomacro-for-pancakes/hello_macro/Cargo.toml +++ b/FRENCH/listings-sources/ch19-advanced-features/no-listing-20-impl-hellomacro-for-pancakes/hello_macro/Cargo.toml @@ -1,7 +1,6 @@ [package] name = "hello_macro" version = "0.1.0" -authors = ["Your Name "] edition = "2018" [dependencies] diff --git a/FRENCH/listings-sources/ch19-advanced-features/no-listing-20-impl-hellomacro-for-pancakes/pancakes/Cargo.toml b/FRENCH/listings-sources/ch19-advanced-features/no-listing-20-impl-hellomacro-for-pancakes/pancakes/Cargo.toml index 4b6c267b42..b941d527be 100644 --- a/FRENCH/listings-sources/ch19-advanced-features/no-listing-20-impl-hellomacro-for-pancakes/pancakes/Cargo.toml +++ b/FRENCH/listings-sources/ch19-advanced-features/no-listing-20-impl-hellomacro-for-pancakes/pancakes/Cargo.toml @@ -1,7 +1,6 @@ [package] name = "pancakes" version = "0.1.0" -authors = ["Your Name "] edition = "2018" [dependencies] diff --git a/FRENCH/listings-sources/ch19-advanced-features/no-listing-21-pancakes/hello_macro/Cargo.toml b/FRENCH/listings-sources/ch19-advanced-features/no-listing-21-pancakes/hello_macro/Cargo.toml index 5a93a685c0..4c4e6f898b 100644 --- a/FRENCH/listings-sources/ch19-advanced-features/no-listing-21-pancakes/hello_macro/Cargo.toml +++ b/FRENCH/listings-sources/ch19-advanced-features/no-listing-21-pancakes/hello_macro/Cargo.toml @@ -1,7 +1,6 @@ [package] name = "hello_macro" version = "0.1.0" -authors = ["Your Name "] edition = "2018" [dependencies] diff --git a/FRENCH/listings-sources/ch19-advanced-features/no-listing-21-pancakes/hello_macro/hello_macro_derive/Cargo.toml b/FRENCH/listings-sources/ch19-advanced-features/no-listing-21-pancakes/hello_macro/hello_macro_derive/Cargo.toml index 168cbae53c..80cada3ef0 100644 --- a/FRENCH/listings-sources/ch19-advanced-features/no-listing-21-pancakes/hello_macro/hello_macro_derive/Cargo.toml +++ b/FRENCH/listings-sources/ch19-advanced-features/no-listing-21-pancakes/hello_macro/hello_macro_derive/Cargo.toml @@ -1,7 +1,6 @@ [package] name = "hello_macro_derive" version = "0.1.0" -authors = ["Your Name "] edition = "2018" [lib] diff --git a/FRENCH/listings-sources/ch19-advanced-features/no-listing-21-pancakes/pancakes/Cargo.toml b/FRENCH/listings-sources/ch19-advanced-features/no-listing-21-pancakes/pancakes/Cargo.toml index cc0addaa4a..f150aec0aa 100644 --- a/FRENCH/listings-sources/ch19-advanced-features/no-listing-21-pancakes/pancakes/Cargo.toml +++ b/FRENCH/listings-sources/ch19-advanced-features/no-listing-21-pancakes/pancakes/Cargo.toml @@ -1,7 +1,6 @@ [package] name = "pancakes" version = "0.1.0" -authors = ["Your Name "] edition = "2018" [dependencies] diff --git a/FRENCH/listings/ch19-advanced-features/listing-19-28/Cargo.toml b/FRENCH/listings/ch19-advanced-features/listing-19-28/Cargo.toml index 1829b0fa66..b9af9c6d62 100644 --- a/FRENCH/listings/ch19-advanced-features/listing-19-28/Cargo.toml +++ b/FRENCH/listings/ch19-advanced-features/listing-19-28/Cargo.toml @@ -1,7 +1,6 @@ [package] name = "macros-example" version = "0.1.0" -authors = ["Your Name "] edition = "2018" [dependencies] diff --git a/FRENCH/listings/ch19-advanced-features/listing-19-30/Cargo.toml b/FRENCH/listings/ch19-advanced-features/listing-19-30/Cargo.toml index 5a93a685c0..4c4e6f898b 100644 --- a/FRENCH/listings/ch19-advanced-features/listing-19-30/Cargo.toml +++ b/FRENCH/listings/ch19-advanced-features/listing-19-30/Cargo.toml @@ -1,7 +1,6 @@ [package] name = "hello_macro" version = "0.1.0" -authors = ["Your Name "] edition = "2018" [dependencies] diff --git a/FRENCH/listings/ch19-advanced-features/listing-19-31/hello_macro/Cargo.toml b/FRENCH/listings/ch19-advanced-features/listing-19-31/hello_macro/Cargo.toml index 5a93a685c0..4c4e6f898b 100644 --- a/FRENCH/listings/ch19-advanced-features/listing-19-31/hello_macro/Cargo.toml +++ b/FRENCH/listings/ch19-advanced-features/listing-19-31/hello_macro/Cargo.toml @@ -1,7 +1,6 @@ [package] name = "hello_macro" version = "0.1.0" -authors = ["Your Name "] edition = "2018" [dependencies] diff --git a/FRENCH/listings/ch19-advanced-features/listing-19-31/hello_macro/hello_macro_derive/Cargo.toml b/FRENCH/listings/ch19-advanced-features/listing-19-31/hello_macro/hello_macro_derive/Cargo.toml index 168cbae53c..80cada3ef0 100644 --- a/FRENCH/listings/ch19-advanced-features/listing-19-31/hello_macro/hello_macro_derive/Cargo.toml +++ b/FRENCH/listings/ch19-advanced-features/listing-19-31/hello_macro/hello_macro_derive/Cargo.toml @@ -1,7 +1,6 @@ [package] name = "hello_macro_derive" version = "0.1.0" -authors = ["Your Name "] edition = "2018" [lib] diff --git a/FRENCH/listings/ch19-advanced-features/listing-19-33/hello_macro/Cargo.toml b/FRENCH/listings/ch19-advanced-features/listing-19-33/hello_macro/Cargo.toml index 5a93a685c0..4c4e6f898b 100644 --- a/FRENCH/listings/ch19-advanced-features/listing-19-33/hello_macro/Cargo.toml +++ b/FRENCH/listings/ch19-advanced-features/listing-19-33/hello_macro/Cargo.toml @@ -1,7 +1,6 @@ [package] name = "hello_macro" version = "0.1.0" -authors = ["Your Name "] edition = "2018" [dependencies] diff --git a/FRENCH/listings/ch19-advanced-features/listing-19-33/hello_macro/hello_macro_derive/Cargo.toml b/FRENCH/listings/ch19-advanced-features/listing-19-33/hello_macro/hello_macro_derive/Cargo.toml index 168cbae53c..80cada3ef0 100644 --- a/FRENCH/listings/ch19-advanced-features/listing-19-33/hello_macro/hello_macro_derive/Cargo.toml +++ b/FRENCH/listings/ch19-advanced-features/listing-19-33/hello_macro/hello_macro_derive/Cargo.toml @@ -1,7 +1,6 @@ [package] name = "hello_macro_derive" version = "0.1.0" -authors = ["Your Name "] edition = "2018" [lib] diff --git a/FRENCH/listings/ch19-advanced-features/no-listing-20-impl-hellomacro-for-pancakes/hello_macro/Cargo.toml b/FRENCH/listings/ch19-advanced-features/no-listing-20-impl-hellomacro-for-pancakes/hello_macro/Cargo.toml index 5a93a685c0..4c4e6f898b 100644 --- a/FRENCH/listings/ch19-advanced-features/no-listing-20-impl-hellomacro-for-pancakes/hello_macro/Cargo.toml +++ b/FRENCH/listings/ch19-advanced-features/no-listing-20-impl-hellomacro-for-pancakes/hello_macro/Cargo.toml @@ -1,7 +1,6 @@ [package] name = "hello_macro" version = "0.1.0" -authors = ["Your Name "] edition = "2018" [dependencies] diff --git a/FRENCH/listings/ch19-advanced-features/no-listing-20-impl-hellomacro-for-pancakes/pancakes/Cargo.toml b/FRENCH/listings/ch19-advanced-features/no-listing-20-impl-hellomacro-for-pancakes/pancakes/Cargo.toml index 4b6c267b42..b941d527be 100644 --- a/FRENCH/listings/ch19-advanced-features/no-listing-20-impl-hellomacro-for-pancakes/pancakes/Cargo.toml +++ b/FRENCH/listings/ch19-advanced-features/no-listing-20-impl-hellomacro-for-pancakes/pancakes/Cargo.toml @@ -1,7 +1,6 @@ [package] name = "pancakes" version = "0.1.0" -authors = ["Your Name "] edition = "2018" [dependencies] diff --git a/FRENCH/listings/ch19-advanced-features/no-listing-21-pancakes/hello_macro/Cargo.toml b/FRENCH/listings/ch19-advanced-features/no-listing-21-pancakes/hello_macro/Cargo.toml index 5a93a685c0..4c4e6f898b 100644 --- a/FRENCH/listings/ch19-advanced-features/no-listing-21-pancakes/hello_macro/Cargo.toml +++ b/FRENCH/listings/ch19-advanced-features/no-listing-21-pancakes/hello_macro/Cargo.toml @@ -1,7 +1,6 @@ [package] name = "hello_macro" version = "0.1.0" -authors = ["Your Name "] edition = "2018" [dependencies] diff --git a/FRENCH/listings/ch19-advanced-features/no-listing-21-pancakes/hello_macro/hello_macro_derive/Cargo.toml b/FRENCH/listings/ch19-advanced-features/no-listing-21-pancakes/hello_macro/hello_macro_derive/Cargo.toml index 168cbae53c..80cada3ef0 100644 --- a/FRENCH/listings/ch19-advanced-features/no-listing-21-pancakes/hello_macro/hello_macro_derive/Cargo.toml +++ b/FRENCH/listings/ch19-advanced-features/no-listing-21-pancakes/hello_macro/hello_macro_derive/Cargo.toml @@ -1,7 +1,6 @@ [package] name = "hello_macro_derive" version = "0.1.0" -authors = ["Your Name "] edition = "2018" [lib] diff --git a/FRENCH/listings/ch19-advanced-features/no-listing-21-pancakes/pancakes/Cargo.toml b/FRENCH/listings/ch19-advanced-features/no-listing-21-pancakes/pancakes/Cargo.toml index cc0addaa4a..f150aec0aa 100644 --- a/FRENCH/listings/ch19-advanced-features/no-listing-21-pancakes/pancakes/Cargo.toml +++ b/FRENCH/listings/ch19-advanced-features/no-listing-21-pancakes/pancakes/Cargo.toml @@ -1,7 +1,6 @@ [package] name = "pancakes" version = "0.1.0" -authors = ["Your Name "] edition = "2018" [dependencies] diff --git a/FRENCH/src/ch19-06-macros.md b/FRENCH/src/ch19-06-macros.md index 3cf8581700..f776d53637 100644 --- a/FRENCH/src/ch19-06-macros.md +++ b/FRENCH/src/ch19-06-macros.md @@ -199,12 +199,12 @@ L'encart 19-28 montre une définition légèrement simplifiée de la macro `vec! Fichier : src/lib.rs -```rust +```rust,noplayground {{#rustdoc_include ../listings/ch19-advanced-features/listing-19-28/src/lib.rs}} ``` @@ -377,7 +377,7 @@ effectively deprecated. With this in mind, as well as the fact that most Rust programmers will *use* macros more than *write* macros, we won’t discuss `macro_rules!` any further. To learn more about how to write macros, consult the online documentation or other resources, such as [“The Little Book of Rust -Macros”][tlborm]. +Macros”][tlborm] started by Daniel Keep and continued by Lukas Wirth. --> Il subsiste quelques cas marginaux étranges avec `macro_rules!`. Bientôt, Rust @@ -387,13 +387,14 @@ manière mais qui corrigera ces cas marginaux. Après cette mise à jour, plupart des développeurs Rust vont plus *utiliser* les macros *qu'écrire* des macros, nous ne verrons plus à nouveau `macro_rules!` à l'avenir. Pour en savoir plus sur l'écriture des macros, consultez la documentation en ligne, ou -d'autres ressources comme [“The Little Book of Rust Macros”][tlborm]. +d'autres ressources comme [“The Little Book of Rust Macros”][tlborm], débuté +par Daniel Keep et continué par Lukas Wirth. -[tlborm]: https://danielkeep.github.io/tlborm/book/index.html +[tlborm]: https://veykril.github.io/tlborm/ -```rust +```rust,noplayground {{#rustdoc_include ../listings/ch19-advanced-features/no-listing-20-impl-hellomacro-for-pancakes/hello_macro/src/lib.rs}} ``` @@ -710,12 +711,12 @@ de `hello_macro_derive` : ```toml -{{#include ../listings/ch19-advanced-features/listing-19-31/hello_macro/hello_macro_derive/Cargo.toml:7:12}} +{{#include ../listings/ch19-advanced-features/listing-19-31/hello_macro/hello_macro_derive/Cargo.toml:6:12}} ``` @@ -128,9 +128,9 @@ En utilisant `TcpListener`, nous pouvons écouter les connexions TCP à l'adress `127.0.0.1:7878`. Dans cette adresse, la partie avant les double-points est une adresse IP qui représente votre ordinateur (c'est la même sur chaque ordinateur et ne représente pas précisément l'ordinateur de l'auteur), et `7878` est le -port. Nous avons choisi ce port pour deux raisons : HTTP est habituellement -accepté sur ce port, et 7878 correspond aux touches utilisées sur un clavier de -téléphone pour écrire *Rust*. +port. Nous avons choisi ce port pour deux raisons : HTTP n'est pas +habituellement accepté sur ce port, et 7878 correspond aux touches utilisées +sur un clavier de téléphone pour écrire *Rust*. Ici, notre réponse a une ligne de statut avec le code de statut 404 et la -phrase de raison `NOT FOUND`. Nous ne retournons toujours pas d'entêtes, et le -corps de la réponse sera le HTML présent dans le fichier *404.html*. Nous aurons -besoin de créer un fichier `404.html` à côté de *hello.html* pour la page -d'erreur ; n'hésitez pas à nouveau à utiliser le HTML que vous souhaitez ou à -défaut utiliser le HTML d'exemple présent dans l'encart 20-8. +phrase de raison `NOT FOUND`. Le corps de la réponse sera le HTML présent dans +le fichier *404.html*. Nous aurons besoin de créer un fichier `404.html` à côté +de *hello.html* pour la page d'erreur ; n'hésitez pas à nouveau à utiliser le +HTML que vous souhaitez ou à défaut utiliser le HTML d'exemple présent dans +l'encart 20-8. src/main.rs:10:16 | 10 | let groupe = GroupeTaches::new(4); - | ^^^^^^^^^^^^ use of undeclared type or module `GroupeTaches` - -error: aborting due to previous error + | ^^^^^^^^^^^^ use of undeclared type `GroupeTaches` For more information about this error, try `rustc --explain E0433`. -error: could not compile `salutations`. - -To learn more, run the command again with --verbose. +error: could not compile `hello` due to previous error \ No newline at end of file diff --git a/FRENCH/listings/ch20-web-server/listing-20-12/src/main.rs b/FRENCH/listings/ch20-web-server/listing-20-12/src/main.rs index 7ca97ae83d..a6d17a312e 100644 --- a/FRENCH/listings/ch20-web-server/listing-20-12/src/main.rs +++ b/FRENCH/listings/ch20-web-server/listing-20-12/src/main.rs @@ -28,17 +28,22 @@ fn gestion_connexion(mut flux: TcpStream) { let pause = b"GET /pause HTTP/1.1\r\n"; let (ligne_statut, nom_fichier) = if tampon.starts_with(get) { - ("HTTP/1.1 200 OK\r\n\r\n", "hello.html") + ("HTTP/1.1 200 OK", "hello.html") } else if tampon.starts_with(pause) { thread::sleep(Duration::from_secs(5)); - ("HTTP/1.1 200 OK\r\n\r\n", "hello.html") + ("HTTP/1.1 200 OK", "hello.html") } else { - ("HTTP/1.1 404 NOT FOUND\r\n\r\n", "404.html") + ("HTTP/1.1 404 NOT FOUND", "404.html") }; let contenu = fs::read_to_string(nom_fichier).unwrap(); - let reponse = format!("{}{}", ligne_statut, contenu); + let reponse = format!( + "{}\r\nContent-Length: {}\r\n\r\n{}", + ligne_statut, + contenu.len(), + contenu + ); flux.write(reponse.as_bytes()).unwrap(); flux.flush().unwrap(); diff --git a/FRENCH/listings/ch20-web-server/listing-20-13/Cargo.toml b/FRENCH/listings/ch20-web-server/listing-20-13/Cargo.toml index c1ad053282..5ed7ee6273 100644 --- a/FRENCH/listings/ch20-web-server/listing-20-13/Cargo.toml +++ b/FRENCH/listings/ch20-web-server/listing-20-13/Cargo.toml @@ -1,7 +1,6 @@ [package] name = "salutations" version = "0.1.0" -authors = ["Your Name "] edition = "2018" [dependencies] diff --git a/FRENCH/listings/ch20-web-server/listing-20-13/src/bin/main.rs b/FRENCH/listings/ch20-web-server/listing-20-13/src/bin/main.rs index cef2fbf808..67b705795b 100644 --- a/FRENCH/listings/ch20-web-server/listing-20-13/src/bin/main.rs +++ b/FRENCH/listings/ch20-web-server/listing-20-13/src/bin/main.rs @@ -37,7 +37,12 @@ fn gestion_connexion(mut flux: TcpStream) { let contenu = fs::read_to_string(nom_fichier).unwrap(); - let reponse = format!("{}{}", ligne_statut, contenu); + let reponse = format!( + "{}\r\nContent-Length: {}\r\n\r\n{}", + ligne_statut, + contenu.len(), + contenu + ); flux.write(reponse.as_bytes()).unwrap(); flux.flush().unwrap(); diff --git a/FRENCH/listings/ch20-web-server/listing-20-13/src/lib.rs b/FRENCH/listings/ch20-web-server/listing-20-13/src/lib.rs index 5e3093bb40..dfe3548a58 100644 --- a/FRENCH/listings/ch20-web-server/listing-20-13/src/lib.rs +++ b/FRENCH/listings/ch20-web-server/listing-20-13/src/lib.rs @@ -26,5 +26,3 @@ impl GroupeTaches { // ANCHOR: here } // ANCHOR_END: here - -fn main() {} diff --git a/FRENCH/listings/ch20-web-server/listing-20-14/Cargo.toml b/FRENCH/listings/ch20-web-server/listing-20-14/Cargo.toml index c1ad053282..5ed7ee6273 100644 --- a/FRENCH/listings/ch20-web-server/listing-20-14/Cargo.toml +++ b/FRENCH/listings/ch20-web-server/listing-20-14/Cargo.toml @@ -1,7 +1,6 @@ [package] name = "salutations" version = "0.1.0" -authors = ["Your Name "] edition = "2018" [dependencies] diff --git a/FRENCH/listings/ch20-web-server/listing-20-14/src/bin/main.rs b/FRENCH/listings/ch20-web-server/listing-20-14/src/bin/main.rs index cef2fbf808..c11a7c9036 100644 --- a/FRENCH/listings/ch20-web-server/listing-20-14/src/bin/main.rs +++ b/FRENCH/listings/ch20-web-server/listing-20-14/src/bin/main.rs @@ -27,17 +27,22 @@ fn gestion_connexion(mut flux: TcpStream) { let pause = b"GET /pause HTTP/1.1\r\n"; let (ligne_statut, nom_fichier) = if tampon.starts_with(get) { - ("HTTP/1.1 200 OK\r\n\r\n", "hello.html") + ("HTTP/1.1 200 OK", "hello.html") } else if tampon.starts_with(pause) { thread::sleep(Duration::from_secs(5)); - ("HTTP/1.1 200 OK\r\n\r\n", "hello.html") + ("HTTP/1.1 200 OK", "hello.html") } else { - ("HTTP/1.1 404 NOT FOUND\r\n\r\n", "404.html") + ("HTTP/1.1 404 NOT FOUND", "404.html") }; let contenu = fs::read_to_string(nom_fichier).unwrap(); - let reponse = format!("{}{}", ligne_statut, contenu); + let reponse = format!( + "{}\r\nContent-Length: {}\r\n\r\n{}", + ligne_statut, + contenu.len(), + contenu + ); flux.write(reponse.as_bytes()).unwrap(); flux.flush().unwrap(); diff --git a/FRENCH/listings/ch20-web-server/listing-20-15/Cargo.toml b/FRENCH/listings/ch20-web-server/listing-20-15/Cargo.toml index c1ad053282..5ed7ee6273 100644 --- a/FRENCH/listings/ch20-web-server/listing-20-15/Cargo.toml +++ b/FRENCH/listings/ch20-web-server/listing-20-15/Cargo.toml @@ -1,7 +1,6 @@ [package] name = "salutations" version = "0.1.0" -authors = ["Your Name "] edition = "2018" [dependencies] diff --git a/FRENCH/listings/ch20-web-server/listing-20-15/src/bin/main.rs b/FRENCH/listings/ch20-web-server/listing-20-15/src/bin/main.rs index cef2fbf808..c11a7c9036 100644 --- a/FRENCH/listings/ch20-web-server/listing-20-15/src/bin/main.rs +++ b/FRENCH/listings/ch20-web-server/listing-20-15/src/bin/main.rs @@ -27,17 +27,22 @@ fn gestion_connexion(mut flux: TcpStream) { let pause = b"GET /pause HTTP/1.1\r\n"; let (ligne_statut, nom_fichier) = if tampon.starts_with(get) { - ("HTTP/1.1 200 OK\r\n\r\n", "hello.html") + ("HTTP/1.1 200 OK", "hello.html") } else if tampon.starts_with(pause) { thread::sleep(Duration::from_secs(5)); - ("HTTP/1.1 200 OK\r\n\r\n", "hello.html") + ("HTTP/1.1 200 OK", "hello.html") } else { - ("HTTP/1.1 404 NOT FOUND\r\n\r\n", "404.html") + ("HTTP/1.1 404 NOT FOUND", "404.html") }; let contenu = fs::read_to_string(nom_fichier).unwrap(); - let reponse = format!("{}{}", ligne_statut, contenu); + let reponse = format!( + "{}\r\nContent-Length: {}\r\n\r\n{}", + ligne_statut, + contenu.len(), + contenu + ); flux.write(reponse.as_bytes()).unwrap(); flux.flush().unwrap(); diff --git a/FRENCH/listings/ch20-web-server/listing-20-15/src/lib.rs b/FRENCH/listings/ch20-web-server/listing-20-15/src/lib.rs index 3c1727f4a8..9a0b769cb7 100644 --- a/FRENCH/listings/ch20-web-server/listing-20-15/src/lib.rs +++ b/FRENCH/listings/ch20-web-server/listing-20-15/src/lib.rs @@ -51,5 +51,3 @@ impl Operateur { } } // ANCHOR_END: here - -fn main() {} diff --git a/FRENCH/listings/ch20-web-server/listing-20-16/Cargo.toml b/FRENCH/listings/ch20-web-server/listing-20-16/Cargo.toml index c1ad053282..5ed7ee6273 100644 --- a/FRENCH/listings/ch20-web-server/listing-20-16/Cargo.toml +++ b/FRENCH/listings/ch20-web-server/listing-20-16/Cargo.toml @@ -1,7 +1,6 @@ [package] name = "salutations" version = "0.1.0" -authors = ["Your Name "] edition = "2018" [dependencies] diff --git a/FRENCH/listings/ch20-web-server/listing-20-16/src/bin/main.rs b/FRENCH/listings/ch20-web-server/listing-20-16/src/bin/main.rs index cef2fbf808..c11a7c9036 100644 --- a/FRENCH/listings/ch20-web-server/listing-20-16/src/bin/main.rs +++ b/FRENCH/listings/ch20-web-server/listing-20-16/src/bin/main.rs @@ -27,17 +27,22 @@ fn gestion_connexion(mut flux: TcpStream) { let pause = b"GET /pause HTTP/1.1\r\n"; let (ligne_statut, nom_fichier) = if tampon.starts_with(get) { - ("HTTP/1.1 200 OK\r\n\r\n", "hello.html") + ("HTTP/1.1 200 OK", "hello.html") } else if tampon.starts_with(pause) { thread::sleep(Duration::from_secs(5)); - ("HTTP/1.1 200 OK\r\n\r\n", "hello.html") + ("HTTP/1.1 200 OK", "hello.html") } else { - ("HTTP/1.1 404 NOT FOUND\r\n\r\n", "404.html") + ("HTTP/1.1 404 NOT FOUND", "404.html") }; let contenu = fs::read_to_string(nom_fichier).unwrap(); - let reponse = format!("{}{}", ligne_statut, contenu); + let reponse = format!( + "{}\r\nContent-Length: {}\r\n\r\n{}", + ligne_statut, + contenu.len(), + contenu + ); flux.write(reponse.as_bytes()).unwrap(); flux.flush().unwrap(); diff --git a/FRENCH/listings/ch20-web-server/listing-20-16/src/lib.rs b/FRENCH/listings/ch20-web-server/listing-20-16/src/lib.rs index d5e75db2c1..ac4fc682ab 100644 --- a/FRENCH/listings/ch20-web-server/listing-20-16/src/lib.rs +++ b/FRENCH/listings/ch20-web-server/listing-20-16/src/lib.rs @@ -58,5 +58,3 @@ impl Operateur { Operateur { id, tache } } } - -fn main() {} diff --git a/FRENCH/listings/ch20-web-server/listing-20-17/Cargo.toml b/FRENCH/listings/ch20-web-server/listing-20-17/Cargo.toml index c1ad053282..5ed7ee6273 100644 --- a/FRENCH/listings/ch20-web-server/listing-20-17/Cargo.toml +++ b/FRENCH/listings/ch20-web-server/listing-20-17/Cargo.toml @@ -1,7 +1,6 @@ [package] name = "salutations" version = "0.1.0" -authors = ["Your Name "] edition = "2018" [dependencies] diff --git a/FRENCH/listings/ch20-web-server/listing-20-17/output.txt b/FRENCH/listings/ch20-web-server/listing-20-17/output.txt index 74328873a1..c613488af0 100644 --- a/FRENCH/listings/ch20-web-server/listing-20-17/output.txt +++ b/FRENCH/listings/ch20-web-server/listing-20-17/output.txt @@ -9,9 +9,5 @@ error[E0382]: use of moved value: `reception` 27 | operateurs.push(Worker::new(id, reception)); | ^^^^^^^^^ value moved here, in previous iteration of loop -error: aborting due to previous error - For more information about this error, try `rustc --explain E0382`. -error: could not compile `salutations`. - -To learn more, run the command again with --verbose. +error: could not compile `hello` due to previous error \ No newline at end of file diff --git a/FRENCH/listings/ch20-web-server/listing-20-17/src/bin/main.rs b/FRENCH/listings/ch20-web-server/listing-20-17/src/bin/main.rs index cef2fbf808..c11a7c9036 100644 --- a/FRENCH/listings/ch20-web-server/listing-20-17/src/bin/main.rs +++ b/FRENCH/listings/ch20-web-server/listing-20-17/src/bin/main.rs @@ -27,17 +27,22 @@ fn gestion_connexion(mut flux: TcpStream) { let pause = b"GET /pause HTTP/1.1\r\n"; let (ligne_statut, nom_fichier) = if tampon.starts_with(get) { - ("HTTP/1.1 200 OK\r\n\r\n", "hello.html") + ("HTTP/1.1 200 OK", "hello.html") } else if tampon.starts_with(pause) { thread::sleep(Duration::from_secs(5)); - ("HTTP/1.1 200 OK\r\n\r\n", "hello.html") + ("HTTP/1.1 200 OK", "hello.html") } else { - ("HTTP/1.1 404 NOT FOUND\r\n\r\n", "404.html") + ("HTTP/1.1 404 NOT FOUND", "404.html") }; let contenu = fs::read_to_string(nom_fichier).unwrap(); - let reponse = format!("{}{}", ligne_statut, contenu); + let reponse = format!( + "{}\r\nContent-Length: {}\r\n\r\n{}", + ligne_statut, + contenu.len(), + contenu + ); flux.write(reponse.as_bytes()).unwrap(); flux.flush().unwrap(); diff --git a/FRENCH/listings/ch20-web-server/listing-20-18/Cargo.toml b/FRENCH/listings/ch20-web-server/listing-20-18/Cargo.toml index c1ad053282..5ed7ee6273 100644 --- a/FRENCH/listings/ch20-web-server/listing-20-18/Cargo.toml +++ b/FRENCH/listings/ch20-web-server/listing-20-18/Cargo.toml @@ -1,7 +1,6 @@ [package] name = "salutations" version = "0.1.0" -authors = ["Your Name "] edition = "2018" [dependencies] diff --git a/FRENCH/listings/ch20-web-server/listing-20-18/src/bin/main.rs b/FRENCH/listings/ch20-web-server/listing-20-18/src/bin/main.rs index cef2fbf808..c11a7c9036 100644 --- a/FRENCH/listings/ch20-web-server/listing-20-18/src/bin/main.rs +++ b/FRENCH/listings/ch20-web-server/listing-20-18/src/bin/main.rs @@ -27,17 +27,22 @@ fn gestion_connexion(mut flux: TcpStream) { let pause = b"GET /pause HTTP/1.1\r\n"; let (ligne_statut, nom_fichier) = if tampon.starts_with(get) { - ("HTTP/1.1 200 OK\r\n\r\n", "hello.html") + ("HTTP/1.1 200 OK", "hello.html") } else if tampon.starts_with(pause) { thread::sleep(Duration::from_secs(5)); - ("HTTP/1.1 200 OK\r\n\r\n", "hello.html") + ("HTTP/1.1 200 OK", "hello.html") } else { - ("HTTP/1.1 404 NOT FOUND\r\n\r\n", "404.html") + ("HTTP/1.1 404 NOT FOUND", "404.html") }; let contenu = fs::read_to_string(nom_fichier).unwrap(); - let reponse = format!("{}{}", ligne_statut, contenu); + let reponse = format!( + "{}\r\nContent-Length: {}\r\n\r\n{}", + ligne_statut, + contenu.len(), + contenu + ); flux.write(reponse.as_bytes()).unwrap(); flux.flush().unwrap(); diff --git a/FRENCH/listings/ch20-web-server/listing-20-18/src/lib.rs b/FRENCH/listings/ch20-web-server/listing-20-18/src/lib.rs index 99cc3915d4..b1810fa2a9 100644 --- a/FRENCH/listings/ch20-web-server/listing-20-18/src/lib.rs +++ b/FRENCH/listings/ch20-web-server/listing-20-18/src/lib.rs @@ -74,5 +74,3 @@ impl Operateur { } } // ANCHOR_END: here - -fn main() {} diff --git a/FRENCH/listings/ch20-web-server/listing-20-19/Cargo.toml b/FRENCH/listings/ch20-web-server/listing-20-19/Cargo.toml index c1ad053282..5ed7ee6273 100644 --- a/FRENCH/listings/ch20-web-server/listing-20-19/Cargo.toml +++ b/FRENCH/listings/ch20-web-server/listing-20-19/Cargo.toml @@ -1,7 +1,6 @@ [package] name = "salutations" version = "0.1.0" -authors = ["Your Name "] edition = "2018" [dependencies] diff --git a/FRENCH/listings/ch20-web-server/listing-20-19/src/bin/main.rs b/FRENCH/listings/ch20-web-server/listing-20-19/src/bin/main.rs index cef2fbf808..c11a7c9036 100644 --- a/FRENCH/listings/ch20-web-server/listing-20-19/src/bin/main.rs +++ b/FRENCH/listings/ch20-web-server/listing-20-19/src/bin/main.rs @@ -27,17 +27,22 @@ fn gestion_connexion(mut flux: TcpStream) { let pause = b"GET /pause HTTP/1.1\r\n"; let (ligne_statut, nom_fichier) = if tampon.starts_with(get) { - ("HTTP/1.1 200 OK\r\n\r\n", "hello.html") + ("HTTP/1.1 200 OK", "hello.html") } else if tampon.starts_with(pause) { thread::sleep(Duration::from_secs(5)); - ("HTTP/1.1 200 OK\r\n\r\n", "hello.html") + ("HTTP/1.1 200 OK", "hello.html") } else { - ("HTTP/1.1 404 NOT FOUND\r\n\r\n", "404.html") + ("HTTP/1.1 404 NOT FOUND", "404.html") }; let contenu = fs::read_to_string(nom_fichier).unwrap(); - let reponse = format!("{}{}", ligne_statut, contenu); + let reponse = format!( + "{}\r\nContent-Length: {}\r\n\r\n{}", + ligne_statut, + contenu.len(), + contenu + ); flux.write(reponse.as_bytes()).unwrap(); flux.flush().unwrap(); diff --git a/FRENCH/listings/ch20-web-server/listing-20-19/src/lib.rs b/FRENCH/listings/ch20-web-server/listing-20-19/src/lib.rs index 4822844a20..7b34a60ba6 100644 --- a/FRENCH/listings/ch20-web-server/listing-20-19/src/lib.rs +++ b/FRENCH/listings/ch20-web-server/listing-20-19/src/lib.rs @@ -67,5 +67,3 @@ impl Operateur { Operateur { id, tache } } } - -fn main() {} diff --git a/FRENCH/listings/ch20-web-server/listing-20-20/Cargo.toml b/FRENCH/listings/ch20-web-server/listing-20-20/Cargo.toml index c1ad053282..5ed7ee6273 100644 --- a/FRENCH/listings/ch20-web-server/listing-20-20/Cargo.toml +++ b/FRENCH/listings/ch20-web-server/listing-20-20/Cargo.toml @@ -1,7 +1,6 @@ [package] name = "salutations" version = "0.1.0" -authors = ["Your Name "] edition = "2018" [dependencies] diff --git a/FRENCH/listings/ch20-web-server/listing-20-20/src/bin/main.rs b/FRENCH/listings/ch20-web-server/listing-20-20/src/bin/main.rs index cef2fbf808..c11a7c9036 100644 --- a/FRENCH/listings/ch20-web-server/listing-20-20/src/bin/main.rs +++ b/FRENCH/listings/ch20-web-server/listing-20-20/src/bin/main.rs @@ -27,17 +27,22 @@ fn gestion_connexion(mut flux: TcpStream) { let pause = b"GET /pause HTTP/1.1\r\n"; let (ligne_statut, nom_fichier) = if tampon.starts_with(get) { - ("HTTP/1.1 200 OK\r\n\r\n", "hello.html") + ("HTTP/1.1 200 OK", "hello.html") } else if tampon.starts_with(pause) { thread::sleep(Duration::from_secs(5)); - ("HTTP/1.1 200 OK\r\n\r\n", "hello.html") + ("HTTP/1.1 200 OK", "hello.html") } else { - ("HTTP/1.1 404 NOT FOUND\r\n\r\n", "404.html") + ("HTTP/1.1 404 NOT FOUND", "404.html") }; let contenu = fs::read_to_string(nom_fichier).unwrap(); - let reponse = format!("{}{}", ligne_statut, contenu); + let reponse = format!( + "{}\r\nContent-Length: {}\r\n\r\n{}", + ligne_statut, + contenu.len(), + contenu + ); flux.write(reponse.as_bytes()).unwrap(); flux.flush().unwrap(); diff --git a/FRENCH/listings/ch20-web-server/listing-20-21/Cargo.toml b/FRENCH/listings/ch20-web-server/listing-20-21/Cargo.toml index c1ad053282..5ed7ee6273 100644 --- a/FRENCH/listings/ch20-web-server/listing-20-21/Cargo.toml +++ b/FRENCH/listings/ch20-web-server/listing-20-21/Cargo.toml @@ -1,7 +1,6 @@ [package] name = "salutations" version = "0.1.0" -authors = ["Your Name "] edition = "2018" [dependencies] diff --git a/FRENCH/listings/ch20-web-server/listing-20-21/src/bin/main.rs b/FRENCH/listings/ch20-web-server/listing-20-21/src/bin/main.rs index cef2fbf808..c11a7c9036 100644 --- a/FRENCH/listings/ch20-web-server/listing-20-21/src/bin/main.rs +++ b/FRENCH/listings/ch20-web-server/listing-20-21/src/bin/main.rs @@ -27,17 +27,22 @@ fn gestion_connexion(mut flux: TcpStream) { let pause = b"GET /pause HTTP/1.1\r\n"; let (ligne_statut, nom_fichier) = if tampon.starts_with(get) { - ("HTTP/1.1 200 OK\r\n\r\n", "hello.html") + ("HTTP/1.1 200 OK", "hello.html") } else if tampon.starts_with(pause) { thread::sleep(Duration::from_secs(5)); - ("HTTP/1.1 200 OK\r\n\r\n", "hello.html") + ("HTTP/1.1 200 OK", "hello.html") } else { - ("HTTP/1.1 404 NOT FOUND\r\n\r\n", "404.html") + ("HTTP/1.1 404 NOT FOUND", "404.html") }; let contenu = fs::read_to_string(nom_fichier).unwrap(); - let reponse = format!("{}{}", ligne_statut, contenu); + let reponse = format!( + "{}\r\nContent-Length: {}\r\n\r\n{}", + ligne_statut, + contenu.len(), + contenu + ); flux.write(reponse.as_bytes()).unwrap(); flux.flush().unwrap(); diff --git a/FRENCH/listings/ch20-web-server/no-listing-01-define-threadpool-struct/Cargo.toml b/FRENCH/listings/ch20-web-server/no-listing-01-define-threadpool-struct/Cargo.toml index c1ad053282..5ed7ee6273 100644 --- a/FRENCH/listings/ch20-web-server/no-listing-01-define-threadpool-struct/Cargo.toml +++ b/FRENCH/listings/ch20-web-server/no-listing-01-define-threadpool-struct/Cargo.toml @@ -1,7 +1,6 @@ [package] name = "salutations" version = "0.1.0" -authors = ["Your Name "] edition = "2018" [dependencies] diff --git a/FRENCH/listings/ch20-web-server/no-listing-01-define-threadpool-struct/output.txt b/FRENCH/listings/ch20-web-server/no-listing-01-define-threadpool-struct/output.txt index 57c846c41d..e120fde4dc 100644 --- a/FRENCH/listings/ch20-web-server/no-listing-01-define-threadpool-struct/output.txt +++ b/FRENCH/listings/ch20-web-server/no-listing-01-define-threadpool-struct/output.txt @@ -1,14 +1,10 @@ $ cargo check Checking salutations v0.1.0 (file:///projects/salutations) -error[E0599]: no function or associated item named `new` found for type `salutations::GroupeTaches` in the current scope +error[E0599]: no function or associated item named `new` found for struct `GroupeTaches` in the current scope --> src/bin/main.rs:11:28 | 11 | let groupe = GroupeTaches::new(4); - | ^^^ function or associated item not found in `salutations::GroupeTaches` - -error: aborting due to previous error + | ^^^ function or associated item not found in `GroupeTaches` For more information about this error, try `rustc --explain E0599`. -error: could not compile `salutations`. - -To learn more, run the command again with --verbose. +error: could not compile `hello` due to previous error \ No newline at end of file diff --git a/FRENCH/listings/ch20-web-server/no-listing-01-define-threadpool-struct/src/bin/main.rs b/FRENCH/listings/ch20-web-server/no-listing-01-define-threadpool-struct/src/bin/main.rs index c8058a9146..725cce159b 100644 --- a/FRENCH/listings/ch20-web-server/no-listing-01-define-threadpool-struct/src/bin/main.rs +++ b/FRENCH/listings/ch20-web-server/no-listing-01-define-threadpool-struct/src/bin/main.rs @@ -29,17 +29,22 @@ fn gestion_connexion(mut flux: TcpStream) { let pause = b"GET /pause HTTP/1.1\r\n"; let (ligne_statut, nom_fichier) = if tampon.starts_with(get) { - ("HTTP/1.1 200 OK\r\n\r\n", "hello.html") + ("HTTP/1.1 200 OK", "hello.html") } else if tampon.starts_with(pause) { thread::sleep(Duration::from_secs(5)); - ("HTTP/1.1 200 OK\r\n\r\n", "hello.html") + ("HTTP/1.1 200 OK", "hello.html") } else { - ("HTTP/1.1 404 NOT FOUND\r\n\r\n", "404.html") + ("HTTP/1.1 404 NOT FOUND", "404.html") }; let contenu = fs::read_to_string(nom_fichier).unwrap(); - let reponse = format!("{}{}", ligne_statut, contenu); + let reponse = format!( + "{}\r\nContent-Length: {}\r\n\r\n{}", + ligne_statut, + contenu.len(), + contenu + ); flux.write(reponse.as_bytes()).unwrap(); flux.flush().unwrap(); diff --git a/FRENCH/listings/ch20-web-server/no-listing-02-impl-threadpool-new/Cargo.toml b/FRENCH/listings/ch20-web-server/no-listing-02-impl-threadpool-new/Cargo.toml index c1ad053282..5ed7ee6273 100644 --- a/FRENCH/listings/ch20-web-server/no-listing-02-impl-threadpool-new/Cargo.toml +++ b/FRENCH/listings/ch20-web-server/no-listing-02-impl-threadpool-new/Cargo.toml @@ -1,7 +1,6 @@ [package] name = "salutations" version = "0.1.0" -authors = ["Your Name "] edition = "2018" [dependencies] diff --git a/FRENCH/listings/ch20-web-server/no-listing-02-impl-threadpool-new/output.txt b/FRENCH/listings/ch20-web-server/no-listing-02-impl-threadpool-new/output.txt index d7fa560a79..aa728376db 100644 --- a/FRENCH/listings/ch20-web-server/no-listing-02-impl-threadpool-new/output.txt +++ b/FRENCH/listings/ch20-web-server/no-listing-02-impl-threadpool-new/output.txt @@ -1,14 +1,10 @@ $ cargo check Checking salutations v0.1.0 (file:///projects/salutations) -error[E0599]: no method named `executer` found for type `salutations::GroupeTaches` in the current scope +error[E0599]: no method named `executer` found for struct `GroupeTaches` in the current scope --> src/bin/main.rs:16:14 | 16 | groupe.executer(|| { - | ^^^^^^^^ method not found in `salutations::GroupeTaches` - -error: aborting due to previous error + | ^^^^^^^^ method not found in `GroupeTaches` For more information about this error, try `rustc --explain E0599`. -error: could not compile `salutations`. - -To learn more, run the command again with --verbose. +error: could not compile `hello` due to previous error \ No newline at end of file diff --git a/FRENCH/listings/ch20-web-server/no-listing-02-impl-threadpool-new/src/bin/main.rs b/FRENCH/listings/ch20-web-server/no-listing-02-impl-threadpool-new/src/bin/main.rs index cef2fbf808..c11a7c9036 100644 --- a/FRENCH/listings/ch20-web-server/no-listing-02-impl-threadpool-new/src/bin/main.rs +++ b/FRENCH/listings/ch20-web-server/no-listing-02-impl-threadpool-new/src/bin/main.rs @@ -27,17 +27,22 @@ fn gestion_connexion(mut flux: TcpStream) { let pause = b"GET /pause HTTP/1.1\r\n"; let (ligne_statut, nom_fichier) = if tampon.starts_with(get) { - ("HTTP/1.1 200 OK\r\n\r\n", "hello.html") + ("HTTP/1.1 200 OK", "hello.html") } else if tampon.starts_with(pause) { thread::sleep(Duration::from_secs(5)); - ("HTTP/1.1 200 OK\r\n\r\n", "hello.html") + ("HTTP/1.1 200 OK", "hello.html") } else { - ("HTTP/1.1 404 NOT FOUND\r\n\r\n", "404.html") + ("HTTP/1.1 404 NOT FOUND", "404.html") }; let contenu = fs::read_to_string(nom_fichier).unwrap(); - let reponse = format!("{}{}", ligne_statut, contenu); + let reponse = format!( + "{}\r\nContent-Length: {}\r\n\r\n{}", + ligne_statut, + contenu.len(), + contenu + ); flux.write(reponse.as_bytes()).unwrap(); flux.flush().unwrap(); diff --git a/FRENCH/listings/ch20-web-server/no-listing-02-impl-threadpool-new/src/lib.rs b/FRENCH/listings/ch20-web-server/no-listing-02-impl-threadpool-new/src/lib.rs index 1ec501baf8..68b3696d36 100644 --- a/FRENCH/listings/ch20-web-server/no-listing-02-impl-threadpool-new/src/lib.rs +++ b/FRENCH/listings/ch20-web-server/no-listing-02-impl-threadpool-new/src/lib.rs @@ -1,11 +1,7 @@ -// ANCHOR: here pub struct GroupeTaches; impl GroupeTaches { pub fn new(taille: usize) -> GroupeTaches { GroupeTaches } -} -// ANCHOR_END: here - -fn main() {} +} \ No newline at end of file diff --git a/FRENCH/listings/ch20-web-server/no-listing-03-define-execute/Cargo.toml b/FRENCH/listings/ch20-web-server/no-listing-03-define-execute/Cargo.toml index c1ad053282..5ed7ee6273 100644 --- a/FRENCH/listings/ch20-web-server/no-listing-03-define-execute/Cargo.toml +++ b/FRENCH/listings/ch20-web-server/no-listing-03-define-execute/Cargo.toml @@ -1,7 +1,6 @@ [package] name = "salutations" version = "0.1.0" -authors = ["Your Name "] edition = "2018" [dependencies] diff --git a/FRENCH/listings/ch20-web-server/no-listing-03-define-execute/src/bin/main.rs b/FRENCH/listings/ch20-web-server/no-listing-03-define-execute/src/bin/main.rs index cef2fbf808..c11a7c9036 100644 --- a/FRENCH/listings/ch20-web-server/no-listing-03-define-execute/src/bin/main.rs +++ b/FRENCH/listings/ch20-web-server/no-listing-03-define-execute/src/bin/main.rs @@ -27,17 +27,22 @@ fn gestion_connexion(mut flux: TcpStream) { let pause = b"GET /pause HTTP/1.1\r\n"; let (ligne_statut, nom_fichier) = if tampon.starts_with(get) { - ("HTTP/1.1 200 OK\r\n\r\n", "hello.html") + ("HTTP/1.1 200 OK", "hello.html") } else if tampon.starts_with(pause) { thread::sleep(Duration::from_secs(5)); - ("HTTP/1.1 200 OK\r\n\r\n", "hello.html") + ("HTTP/1.1 200 OK", "hello.html") } else { - ("HTTP/1.1 404 NOT FOUND\r\n\r\n", "404.html") + ("HTTP/1.1 404 NOT FOUND", "404.html") }; let contenu = fs::read_to_string(nom_fichier).unwrap(); - let reponse = format!("{}{}", ligne_statut, contenu); + let reponse = format!( + "{}\r\nContent-Length: {}\r\n\r\n{}", + ligne_statut, + contenu.len(), + contenu + ); flux.write(reponse.as_bytes()).unwrap(); flux.flush().unwrap(); diff --git a/FRENCH/listings/ch20-web-server/no-listing-03-define-execute/src/lib.rs b/FRENCH/listings/ch20-web-server/no-listing-03-define-execute/src/lib.rs index a0645b6a6c..34787f526b 100644 --- a/FRENCH/listings/ch20-web-server/no-listing-03-define-execute/src/lib.rs +++ b/FRENCH/listings/ch20-web-server/no-listing-03-define-execute/src/lib.rs @@ -16,5 +16,3 @@ impl GroupeTaches { } } // ANCHOR_END: here - -fn main() {} diff --git a/FRENCH/src/ch20-02-multithreaded.md b/FRENCH/src/ch20-02-multithreaded.md index adf8c56645..4cecf17915 100644 --- a/FRENCH/src/ch20-02-multithreaded.md +++ b/FRENCH/src/ch20-02-multithreaded.md @@ -411,12 +411,12 @@ moment : Fichier : src/lib.rs -```rust +```rust,noplayground {{#rustdoc_include ../listings/ch20-web-server/no-listing-01-define-threadpool-struct/src/lib.rs}} ``` @@ -493,13 +493,13 @@ ces caractéristiques : Fichier : src/lib.rs -```rust -{{#rustdoc_include ../listings-sources/ch20-web-server/no-listing-02-impl-threadpool-new/src/lib.rs:here}} +```rust,noplayground +{{#rustdoc_include ../listings-sources/ch20-web-server/no-listing-02-impl-threadpool-new/src/lib.rs}} ``` ```rust,ignore pub fn spawn(f: F) -> JoinHandle where - F: FnOnce() -> T + Send + 'static, - T: Send + 'static + F: FnOnce() -> T, + F: Send + 'static, + T: Send + 'static, ``` -```rust +```rust,noplayground {{#rustdoc_include ../listings/ch20-web-server/no-listing-03-define-execute/src/lib.rs:here}} ``` - -```rust +```rust,noplayground {{#rustdoc_include ../listings/ch20-web-server/listing-20-13/src/lib.rs:here}} ``` @@ -816,16 +817,18 @@ une tâche ? Regardons à nouveau la signature de `thread::spawn` : ```rust,ignore pub fn spawn(f: F) -> JoinHandle where - F: FnOnce() -> T + Send + 'static, - T: Send + 'static + F: FnOnce() -> T, + F: Send + 'static, + T: Send + 'static, ``` --> ```rust,ignore pub fn spawn(f: F) -> JoinHandle where - F: FnOnce() -> T + Send + 'static, - T: Send + 'static + F: FnOnce() -> T, + F: Send + 'static, + T: Send + 'static, ``` -```rust +```rust,noplayground {{#rustdoc_include ../listings/ch20-web-server/listing-20-15/src/lib.rs:here}} ``` @@ -1172,12 +1175,12 @@ d'éléments que nous enverrons dans le canal. Fichier : src/lib.rs -```rust +```rust,noplayground {{#rustdoc_include ../listings/ch20-web-server/listing-20-16/src/lib.rs:here}} ``` @@ -1312,12 +1315,12 @@ montre les changements que nous devons apporter. Fichier : src/lib.rs -```rust +```rust,noplayground {{#rustdoc_include ../listings/ch20-web-server/listing-20-18/src/lib.rs:here}} ``` @@ -1376,12 +1379,12 @@ Voyez cela dans l'encart 20-19. Fichier : src/lib.rs -```rust +```rust,noplayground {{#rustdoc_include ../listings/ch20-web-server/listing-20-19/src/lib.rs:here}} ``` @@ -1437,12 +1440,12 @@ un. Appliquons les changements montrés dans l'encart 20-20 à `Operateur::new`. Fichier : src/lib.rs -```rust +```rust,noplayground {{#rustdoc_include ../listings/ch20-web-server/listing-20-20/src/lib.rs:here}} ``` @@ -1538,6 +1541,8 @@ warning: field is never read: `thread` 49 | thread: thread::JoinHandle<()>, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +warning: 3 warnings emitted + Finished dev [unoptimized + debuginfo] target(s) in 1.40s Running `target/debug/main` Worker 0 got a job; executing. @@ -1576,6 +1581,8 @@ warning: field is never read: `tache` 49 | tache: thread::JoinHandle<()>, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +warning: 3 warnings emitted + Finished dev [unoptimized + debuginfo] target(s) in 1.40s Running `target/debug/main` L'opérateur 0 a obtenu une mission ; il l'exécute. @@ -1661,9 +1668,7 @@ method returns. At compile time, the borrow checker can then enforce the rule that a resource guarded by a `Mutex` cannot be accessed unless we hold the lock. But this implementation can also result in the lock being held longer than intended if we don’t think carefully about the lifetime of the -`MutexGuard`. Because the values in the `while let` expression remain in -scope for the duration of the block, the lock remains held for the duration of -the call to `job()`, meaning other workers cannot receive jobs. +`MutexGuard`. --> Ce code se compile et s'exécute mais ne se comporte pas comme nous @@ -1677,24 +1682,26 @@ vérifier la règle qui dit qu'une ressource gardée par un `Mutex` ne peut pas être accessible que si nous avons ce verrou. Mais cette implémentation peut aussi faire en sorte que nous gardions le verrou plus longtemps que prévu si nous ne réfléchissons pas avec attention sur la durée de vie du -`MutexGuard`. Comme les valeurs dans l'expression du `while let` restent dans -la portée pour la durée de ce bloc, le verrou reste verrouillé pendant la durée -de l'appel à `mission()`, ce qui signifie que les autres opérateurs ne peuvent -pas recevoir d'autres missions. - - - -En utilisant `loop` à la place et en obtenant le verrou sans l'assigner à une -variable, le `MutexGuard` temporairement retourné par la méthode `lock` est -libéré dès que l'instruction `let mission` se termine. Cela fait en sorte que le -verrou est gardé pendant l'appel à `recv`, mais il est libéré avant l'appel à -`mission()`, ce qui permet à plusieurs requêtes qu'être servies en concurrence. +`MutexGuard`. + + + +Le code de l'encart 20-20 qui utilise `let mission = +reception.lock().unwrap().recv().unwrap();` fonctionne, car avec `let`, toute +valeur temporaire utilisée dans la partie droite du signe égal est libérée +immédiatement lorsque l'instruction `let` se termine. Cependant, `while let` ( +ainsi que `if let` et `match`) ne libèrent pas les valeurs temporaires avant la +fin du bloc associé. Dans l'encart 20-21, le verrou continue à être maintenu +pendant toute la durée de l'appel à `mission()`, ce qui veut dire que les +autres opérateurs ne peuvent pas recevoir des tâches. src/lib.rs:52:13 | 52 | operateur.tache.join().unwrap(); - | ^^^^^^^^^^^^^^^ move occurs because `operateur.tache` has type `std::thread::JoinHandle<()>`, which does not implement the `Copy` trait - -error: aborting due to previous error + | ^^^^^^^^^^^^^^^ move occurs because `operateur.tache` has type `JoinHandle<()>`, which does not implement the `Copy` trait For more information about this error, try `rustc --explain E0507`. -error: could not compile `salutations`. - -To learn more, run the command again with --verbose. +error: could not compile `hello` due to previous error \ No newline at end of file diff --git a/FRENCH/listings/ch20-web-server/listing-20-22/src/bin/main.rs b/FRENCH/listings/ch20-web-server/listing-20-22/src/bin/main.rs index cef2fbf808..c11a7c9036 100644 --- a/FRENCH/listings/ch20-web-server/listing-20-22/src/bin/main.rs +++ b/FRENCH/listings/ch20-web-server/listing-20-22/src/bin/main.rs @@ -27,17 +27,22 @@ fn gestion_connexion(mut flux: TcpStream) { let pause = b"GET /pause HTTP/1.1\r\n"; let (ligne_statut, nom_fichier) = if tampon.starts_with(get) { - ("HTTP/1.1 200 OK\r\n\r\n", "hello.html") + ("HTTP/1.1 200 OK", "hello.html") } else if tampon.starts_with(pause) { thread::sleep(Duration::from_secs(5)); - ("HTTP/1.1 200 OK\r\n\r\n", "hello.html") + ("HTTP/1.1 200 OK", "hello.html") } else { - ("HTTP/1.1 404 NOT FOUND\r\n\r\n", "404.html") + ("HTTP/1.1 404 NOT FOUND", "404.html") }; let contenu = fs::read_to_string(nom_fichier).unwrap(); - let reponse = format!("{}{}", ligne_statut, contenu); + let reponse = format!( + "{}\r\nContent-Length: {}\r\n\r\n{}", + ligne_statut, + contenu.len(), + contenu + ); flux.write(reponse.as_bytes()).unwrap(); flux.flush().unwrap(); diff --git a/FRENCH/listings/ch20-web-server/listing-20-23/Cargo.toml b/FRENCH/listings/ch20-web-server/listing-20-23/Cargo.toml index c1ad053282..5ed7ee6273 100644 --- a/FRENCH/listings/ch20-web-server/listing-20-23/Cargo.toml +++ b/FRENCH/listings/ch20-web-server/listing-20-23/Cargo.toml @@ -1,7 +1,6 @@ [package] name = "salutations" version = "0.1.0" -authors = ["Your Name "] edition = "2018" [dependencies] diff --git a/FRENCH/listings/ch20-web-server/listing-20-23/src/bin/main.rs b/FRENCH/listings/ch20-web-server/listing-20-23/src/bin/main.rs index cef2fbf808..c11a7c9036 100644 --- a/FRENCH/listings/ch20-web-server/listing-20-23/src/bin/main.rs +++ b/FRENCH/listings/ch20-web-server/listing-20-23/src/bin/main.rs @@ -27,17 +27,22 @@ fn gestion_connexion(mut flux: TcpStream) { let pause = b"GET /pause HTTP/1.1\r\n"; let (ligne_statut, nom_fichier) = if tampon.starts_with(get) { - ("HTTP/1.1 200 OK\r\n\r\n", "hello.html") + ("HTTP/1.1 200 OK", "hello.html") } else if tampon.starts_with(pause) { thread::sleep(Duration::from_secs(5)); - ("HTTP/1.1 200 OK\r\n\r\n", "hello.html") + ("HTTP/1.1 200 OK", "hello.html") } else { - ("HTTP/1.1 404 NOT FOUND\r\n\r\n", "404.html") + ("HTTP/1.1 404 NOT FOUND", "404.html") }; let contenu = fs::read_to_string(nom_fichier).unwrap(); - let reponse = format!("{}{}", ligne_statut, contenu); + let reponse = format!( + "{}\r\nContent-Length: {}\r\n\r\n{}", + ligne_statut, + contenu.len(), + contenu + ); flux.write(reponse.as_bytes()).unwrap(); flux.flush().unwrap(); diff --git a/FRENCH/listings/ch20-web-server/listing-20-24/Cargo.toml b/FRENCH/listings/ch20-web-server/listing-20-24/Cargo.toml index c1ad053282..5ed7ee6273 100644 --- a/FRENCH/listings/ch20-web-server/listing-20-24/Cargo.toml +++ b/FRENCH/listings/ch20-web-server/listing-20-24/Cargo.toml @@ -1,7 +1,6 @@ [package] name = "salutations" version = "0.1.0" -authors = ["Your Name "] edition = "2018" [dependencies] diff --git a/FRENCH/listings/ch20-web-server/listing-20-24/src/bin/main.rs b/FRENCH/listings/ch20-web-server/listing-20-24/src/bin/main.rs index cef2fbf808..c11a7c9036 100644 --- a/FRENCH/listings/ch20-web-server/listing-20-24/src/bin/main.rs +++ b/FRENCH/listings/ch20-web-server/listing-20-24/src/bin/main.rs @@ -27,17 +27,22 @@ fn gestion_connexion(mut flux: TcpStream) { let pause = b"GET /pause HTTP/1.1\r\n"; let (ligne_statut, nom_fichier) = if tampon.starts_with(get) { - ("HTTP/1.1 200 OK\r\n\r\n", "hello.html") + ("HTTP/1.1 200 OK", "hello.html") } else if tampon.starts_with(pause) { thread::sleep(Duration::from_secs(5)); - ("HTTP/1.1 200 OK\r\n\r\n", "hello.html") + ("HTTP/1.1 200 OK", "hello.html") } else { - ("HTTP/1.1 404 NOT FOUND\r\n\r\n", "404.html") + ("HTTP/1.1 404 NOT FOUND", "404.html") }; let contenu = fs::read_to_string(nom_fichier).unwrap(); - let reponse = format!("{}{}", ligne_statut, contenu); + let reponse = format!( + "{}\r\nContent-Length: {}\r\n\r\n{}", + ligne_statut, + contenu.len(), + contenu + ); flux.write(reponse.as_bytes()).unwrap(); flux.flush().unwrap(); diff --git a/FRENCH/listings/ch20-web-server/listing-20-25/Cargo.toml b/FRENCH/listings/ch20-web-server/listing-20-25/Cargo.toml index c1ad053282..5ed7ee6273 100644 --- a/FRENCH/listings/ch20-web-server/listing-20-25/Cargo.toml +++ b/FRENCH/listings/ch20-web-server/listing-20-25/Cargo.toml @@ -1,7 +1,6 @@ [package] name = "salutations" version = "0.1.0" -authors = ["Your Name "] edition = "2018" [dependencies] diff --git a/FRENCH/listings/ch20-web-server/listing-20-25/src/bin/main.rs b/FRENCH/listings/ch20-web-server/listing-20-25/src/bin/main.rs index e2f2037533..87672f79d2 100644 --- a/FRENCH/listings/ch20-web-server/listing-20-25/src/bin/main.rs +++ b/FRENCH/listings/ch20-web-server/listing-20-25/src/bin/main.rs @@ -1,4 +1,3 @@ -// ANCHOR: all use salutations::GroupeTaches; use std::fs; use std::io::prelude::*; @@ -32,19 +31,23 @@ fn gestion_connexion(mut flux: TcpStream) { let pause = b"GET /pause HTTP/1.1\r\n"; let (ligne_statut, nom_fichier) = if tampon.starts_with(get) { - ("HTTP/1.1 200 OK\r\n\r\n", "hello.html") + ("HTTP/1.1 200 OK", "hello.html") } else if tampon.starts_with(pause) { thread::sleep(Duration::from_secs(5)); - ("HTTP/1.1 200 OK\r\n\r\n", "hello.html") + ("HTTP/1.1 200 OK", "hello.html") } else { - ("HTTP/1.1 404 NOT FOUND\r\n\r\n", "404.html") + ("HTTP/1.1 404 NOT FOUND", "404.html") }; let contenu = fs::read_to_string(nom_fichier).unwrap(); - let reponse = format!("{}{}", ligne_statut, contenu); + let reponse = format!( + "{}\r\nContent-Length: {}\r\n\r\n{}", + ligne_statut, + contenu.len(), + contenu + ); flux.write(reponse.as_bytes()).unwrap(); flux.flush().unwrap(); } -// ANCHOR_END: all diff --git a/FRENCH/listings/ch20-web-server/listing-20-25/src/lib.rs b/FRENCH/listings/ch20-web-server/listing-20-25/src/lib.rs index 08bed751b0..903934a017 100644 --- a/FRENCH/listings/ch20-web-server/listing-20-25/src/lib.rs +++ b/FRENCH/listings/ch20-web-server/listing-20-25/src/lib.rs @@ -1,4 +1,3 @@ -// ANCHOR: here use std::sync::mpsc; use std::sync::Arc; use std::sync::Mutex; @@ -99,7 +98,4 @@ impl Operateur { tache: Some(tache), } } -} -// ANCHOR_END: here - -fn main() {} +} \ No newline at end of file diff --git a/FRENCH/listings/ch20-web-server/no-listing-04-update-worker-definition/Cargo.toml b/FRENCH/listings/ch20-web-server/no-listing-04-update-worker-definition/Cargo.toml index c1ad053282..5ed7ee6273 100644 --- a/FRENCH/listings/ch20-web-server/no-listing-04-update-worker-definition/Cargo.toml +++ b/FRENCH/listings/ch20-web-server/no-listing-04-update-worker-definition/Cargo.toml @@ -1,7 +1,6 @@ [package] name = "salutations" version = "0.1.0" -authors = ["Your Name "] edition = "2018" [dependencies] diff --git a/FRENCH/listings/ch20-web-server/no-listing-04-update-worker-definition/output.txt b/FRENCH/listings/ch20-web-server/no-listing-04-update-worker-definition/output.txt index e9dafae1b8..8ad56eb225 100644 --- a/FRENCH/listings/ch20-web-server/no-listing-04-update-worker-definition/output.txt +++ b/FRENCH/listings/ch20-web-server/no-listing-04-update-worker-definition/output.txt @@ -1,10 +1,10 @@ $ cargo check Checking salutations v0.1.0 (file:///projects/salutations) -error[E0599]: no method named `join` found for type `std::option::Option>` in the current scope +error[E0599]: no method named `join` found for enum `Option` in the current scope --> src/lib.rs:52:27 | 52 | operateur.tache.join().unwrap(); - | ^^^^ method not found in `std::option::Option>` + | ^^^^ method not found in `Option>` error[E0308]: mismatched types --> src/lib.rs:72:22 @@ -12,16 +12,12 @@ error[E0308]: mismatched types 72 | Worker { id, tache } | ^^^^^ | | - | expected enum `std::option::Option`, found struct `std::thread::JoinHandle` + | expected enum `Option`, found struct `JoinHandle` | help: try using a variant of the expected enum: `Some(tache)` | - = note: expected enum `std::option::Option>` - found struct `std::thread::JoinHandle<_>` - -error: aborting due to 2 previous errors + = note: expected enum `Option>` + found struct `JoinHandle<_>` Some errors have detailed explanations: E0308, E0599. For more information about an error, try `rustc --explain E0308`. -error: could not compile `salutations`. - -To learn more, run the command again with --verbose. +error: could not compile `hello` due to 2 previous errors \ No newline at end of file diff --git a/FRENCH/listings/ch20-web-server/no-listing-04-update-worker-definition/src/bin/main.rs b/FRENCH/listings/ch20-web-server/no-listing-04-update-worker-definition/src/bin/main.rs index cef2fbf808..c11a7c9036 100644 --- a/FRENCH/listings/ch20-web-server/no-listing-04-update-worker-definition/src/bin/main.rs +++ b/FRENCH/listings/ch20-web-server/no-listing-04-update-worker-definition/src/bin/main.rs @@ -27,17 +27,22 @@ fn gestion_connexion(mut flux: TcpStream) { let pause = b"GET /pause HTTP/1.1\r\n"; let (ligne_statut, nom_fichier) = if tampon.starts_with(get) { - ("HTTP/1.1 200 OK\r\n\r\n", "hello.html") + ("HTTP/1.1 200 OK", "hello.html") } else if tampon.starts_with(pause) { thread::sleep(Duration::from_secs(5)); - ("HTTP/1.1 200 OK\r\n\r\n", "hello.html") + ("HTTP/1.1 200 OK", "hello.html") } else { - ("HTTP/1.1 404 NOT FOUND\r\n\r\n", "404.html") + ("HTTP/1.1 404 NOT FOUND", "404.html") }; let contenu = fs::read_to_string(nom_fichier).unwrap(); - let reponse = format!("{}{}", ligne_statut, contenu); + let reponse = format!( + "{}\r\nContent-Length: {}\r\n\r\n{}", + ligne_statut, + contenu.len(), + contenu + ); flux.write(reponse.as_bytes()).unwrap(); flux.flush().unwrap(); diff --git a/FRENCH/listings/ch20-web-server/no-listing-05-fix-worker-new/Cargo.toml b/FRENCH/listings/ch20-web-server/no-listing-05-fix-worker-new/Cargo.toml index c1ad053282..5ed7ee6273 100644 --- a/FRENCH/listings/ch20-web-server/no-listing-05-fix-worker-new/Cargo.toml +++ b/FRENCH/listings/ch20-web-server/no-listing-05-fix-worker-new/Cargo.toml @@ -1,7 +1,6 @@ [package] name = "salutations" version = "0.1.0" -authors = ["Your Name "] edition = "2018" [dependencies] diff --git a/FRENCH/listings/ch20-web-server/no-listing-05-fix-worker-new/src/bin/main.rs b/FRENCH/listings/ch20-web-server/no-listing-05-fix-worker-new/src/bin/main.rs index cef2fbf808..c11a7c9036 100644 --- a/FRENCH/listings/ch20-web-server/no-listing-05-fix-worker-new/src/bin/main.rs +++ b/FRENCH/listings/ch20-web-server/no-listing-05-fix-worker-new/src/bin/main.rs @@ -27,17 +27,22 @@ fn gestion_connexion(mut flux: TcpStream) { let pause = b"GET /pause HTTP/1.1\r\n"; let (ligne_statut, nom_fichier) = if tampon.starts_with(get) { - ("HTTP/1.1 200 OK\r\n\r\n", "hello.html") + ("HTTP/1.1 200 OK", "hello.html") } else if tampon.starts_with(pause) { thread::sleep(Duration::from_secs(5)); - ("HTTP/1.1 200 OK\r\n\r\n", "hello.html") + ("HTTP/1.1 200 OK", "hello.html") } else { - ("HTTP/1.1 404 NOT FOUND\r\n\r\n", "404.html") + ("HTTP/1.1 404 NOT FOUND", "404.html") }; let contenu = fs::read_to_string(nom_fichier).unwrap(); - let reponse = format!("{}{}", ligne_statut, contenu); + let reponse = format!( + "{}\r\nContent-Length: {}\r\n\r\n{}", + ligne_statut, + contenu.len(), + contenu + ); flux.write(reponse.as_bytes()).unwrap(); flux.flush().unwrap(); diff --git a/FRENCH/listings/ch20-web-server/no-listing-06-fix-threadpool-drop/Cargo.toml b/FRENCH/listings/ch20-web-server/no-listing-06-fix-threadpool-drop/Cargo.toml index c1ad053282..5ed7ee6273 100644 --- a/FRENCH/listings/ch20-web-server/no-listing-06-fix-threadpool-drop/Cargo.toml +++ b/FRENCH/listings/ch20-web-server/no-listing-06-fix-threadpool-drop/Cargo.toml @@ -1,7 +1,6 @@ [package] name = "salutations" version = "0.1.0" -authors = ["Your Name "] edition = "2018" [dependencies] diff --git a/FRENCH/listings/ch20-web-server/no-listing-06-fix-threadpool-drop/src/bin/main.rs b/FRENCH/listings/ch20-web-server/no-listing-06-fix-threadpool-drop/src/bin/main.rs index cef2fbf808..c11a7c9036 100644 --- a/FRENCH/listings/ch20-web-server/no-listing-06-fix-threadpool-drop/src/bin/main.rs +++ b/FRENCH/listings/ch20-web-server/no-listing-06-fix-threadpool-drop/src/bin/main.rs @@ -27,17 +27,22 @@ fn gestion_connexion(mut flux: TcpStream) { let pause = b"GET /pause HTTP/1.1\r\n"; let (ligne_statut, nom_fichier) = if tampon.starts_with(get) { - ("HTTP/1.1 200 OK\r\n\r\n", "hello.html") + ("HTTP/1.1 200 OK", "hello.html") } else if tampon.starts_with(pause) { thread::sleep(Duration::from_secs(5)); - ("HTTP/1.1 200 OK\r\n\r\n", "hello.html") + ("HTTP/1.1 200 OK", "hello.html") } else { - ("HTTP/1.1 404 NOT FOUND\r\n\r\n", "404.html") + ("HTTP/1.1 404 NOT FOUND", "404.html") }; let contenu = fs::read_to_string(nom_fichier).unwrap(); - let reponse = format!("{}{}", ligne_statut, contenu); + let reponse = format!( + "{}\r\nContent-Length: {}\r\n\r\n{}", + ligne_statut, + contenu.len(), + contenu + ); flux.write(reponse.as_bytes()).unwrap(); flux.flush().unwrap(); diff --git a/FRENCH/listings/ch20-web-server/no-listing-07-define-message-enum/Cargo.toml b/FRENCH/listings/ch20-web-server/no-listing-07-define-message-enum/Cargo.toml index c1ad053282..5ed7ee6273 100644 --- a/FRENCH/listings/ch20-web-server/no-listing-07-define-message-enum/Cargo.toml +++ b/FRENCH/listings/ch20-web-server/no-listing-07-define-message-enum/Cargo.toml @@ -1,7 +1,6 @@ [package] name = "salutations" version = "0.1.0" -authors = ["Your Name "] edition = "2018" [dependencies] diff --git a/FRENCH/listings/ch20-web-server/no-listing-07-define-message-enum/src/bin/main.rs b/FRENCH/listings/ch20-web-server/no-listing-07-define-message-enum/src/bin/main.rs index cef2fbf808..c11a7c9036 100644 --- a/FRENCH/listings/ch20-web-server/no-listing-07-define-message-enum/src/bin/main.rs +++ b/FRENCH/listings/ch20-web-server/no-listing-07-define-message-enum/src/bin/main.rs @@ -27,17 +27,22 @@ fn gestion_connexion(mut flux: TcpStream) { let pause = b"GET /pause HTTP/1.1\r\n"; let (ligne_statut, nom_fichier) = if tampon.starts_with(get) { - ("HTTP/1.1 200 OK\r\n\r\n", "hello.html") + ("HTTP/1.1 200 OK", "hello.html") } else if tampon.starts_with(pause) { thread::sleep(Duration::from_secs(5)); - ("HTTP/1.1 200 OK\r\n\r\n", "hello.html") + ("HTTP/1.1 200 OK", "hello.html") } else { - ("HTTP/1.1 404 NOT FOUND\r\n\r\n", "404.html") + ("HTTP/1.1 404 NOT FOUND", "404.html") }; let contenu = fs::read_to_string(nom_fichier).unwrap(); - let reponse = format!("{}{}", ligne_statut, contenu); + let reponse = format!( + "{}\r\nContent-Length: {}\r\n\r\n{}", + ligne_statut, + contenu.len(), + contenu + ); flux.write(reponse.as_bytes()).unwrap(); flux.flush().unwrap(); diff --git a/FRENCH/listings/ch20-web-server/no-listing-07-define-message-enum/src/lib.rs b/FRENCH/listings/ch20-web-server/no-listing-07-define-message-enum/src/lib.rs index bbe892c72a..9dae7cc7f6 100644 --- a/FRENCH/listings/ch20-web-server/no-listing-07-define-message-enum/src/lib.rs +++ b/FRENCH/listings/ch20-web-server/no-listing-07-define-message-enum/src/lib.rs @@ -84,5 +84,3 @@ impl Operateur { } } } - -fn main() {} diff --git a/FRENCH/listings/ch20-web-server/no-listing-08-final-code/404.html b/FRENCH/listings/ch20-web-server/no-listing-08-final-code/404.html new file mode 100644 index 0000000000..54d186c64a --- /dev/null +++ b/FRENCH/listings/ch20-web-server/no-listing-08-final-code/404.html @@ -0,0 +1,11 @@ + + + + + Salutations ! + + +

Oups !

+

Désolé, je ne connaît pas ce que vous demandez.

+ + diff --git a/FRENCH/listings/ch20-web-server/no-listing-08-final-code/Cargo.lock b/FRENCH/listings/ch20-web-server/no-listing-08-final-code/Cargo.lock new file mode 100644 index 0000000000..5b8dabb072 --- /dev/null +++ b/FRENCH/listings/ch20-web-server/no-listing-08-final-code/Cargo.lock @@ -0,0 +1,6 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +[[package]] +name = "salutations" +version = "0.1.0" + diff --git a/FRENCH/listings/ch20-web-server/no-listing-08-final-code/Cargo.toml b/FRENCH/listings/ch20-web-server/no-listing-08-final-code/Cargo.toml new file mode 100644 index 0000000000..5ed7ee6273 --- /dev/null +++ b/FRENCH/listings/ch20-web-server/no-listing-08-final-code/Cargo.toml @@ -0,0 +1,6 @@ +[package] +name = "salutations" +version = "0.1.0" +edition = "2018" + +[dependencies] diff --git a/FRENCH/listings/ch20-web-server/no-listing-08-final-code/hello.html b/FRENCH/listings/ch20-web-server/no-listing-08-final-code/hello.html new file mode 100644 index 0000000000..1eae03d203 --- /dev/null +++ b/FRENCH/listings/ch20-web-server/no-listing-08-final-code/hello.html @@ -0,0 +1,11 @@ + + + + + Salutations ! + + +

Salut !

+

Bonjour de la part de Rust

+ + diff --git a/FRENCH/listings/ch20-web-server/no-listing-08-final-code/src/bin/main.rs b/FRENCH/listings/ch20-web-server/no-listing-08-final-code/src/bin/main.rs new file mode 100644 index 0000000000..9ff74e48b4 --- /dev/null +++ b/FRENCH/listings/ch20-web-server/no-listing-08-final-code/src/bin/main.rs @@ -0,0 +1,51 @@ +use salutations::GroupeTaches; +use std::fs; +use std::io::prelude::*; +use std::net::TcpListener; +use std::net::TcpStream; +use std::thread; +use std::time::Duration; + +fn main() { + let ecouteur = TcpListener::bind("127.0.0.1:7878").unwrap(); + let groupe = GroupeTaches::new(4); + + for flux in ecouteur.incoming() { + let flux = flux.unwrap(); + + groupe.executer(|| { + gestion_connexion(flux); + }); + } + + println!("Shutting down."); +} + +fn gestion_connexion(mut flux: TcpStream) { + let mut tampon = [0; 1024]; + flux.read(&mut tampon).unwrap(); + + let get = b"GET / HTTP/1.1\r\n"; + let pause = b"GET /pause HTTP/1.1\r\n"; + + let (ligne_statut, nom_fichier) = if tampon.starts_with(get) { + ("HTTP/1.1 200 OK", "hello.html") + } else if tampon.starts_with(pause) { + thread::sleep(Duration::from_secs(5)); + ("HTTP/1.1 200 OK", "hello.html") + } else { + ("HTTP/1.1 404 NOT FOUND", "404.html") + }; + + let contenu = fs::read_to_string(nom_fichier).unwrap(); + + let reponse = format!( + "{}\r\nContent-Length: {}\r\n\r\n{}", + ligne_statut, + contenu.len(), + contenu + ); + + flux.write(reponse.as_bytes()).unwrap(); + flux.flush().unwrap(); +} diff --git a/FRENCH/listings/ch20-web-server/no-listing-08-final-code/src/lib.rs b/FRENCH/listings/ch20-web-server/no-listing-08-final-code/src/lib.rs new file mode 100644 index 0000000000..190173ab9f --- /dev/null +++ b/FRENCH/listings/ch20-web-server/no-listing-08-final-code/src/lib.rs @@ -0,0 +1,101 @@ +use std::sync::mpsc; +use std::sync::Arc; +use std::sync::Mutex; +use std::thread; + +pub struct GroupeTaches { + operateurs: Vec, + envoi: mpsc::Sender, +} + +type Mission = Box; + +enum Message { + NouvelleMission(Mission), + Extinction, +} + +impl GroupeTaches { + /// Crée un nouveau GroupeTaches. + /// + /// La taille est le nom de tâches présentes dans le groupe. + /// + /// # Panics + /// + /// La fonction `new` devrait paniquer si la taille vaut zéro. + pub fn new(taille: usize) -> GroupeTaches { + assert!(taille > 0); + + let (envoi, reception) = mpsc::channel(); + + let reception = Arc::new(Mutex::new(reception)); + + let mut operateurs = Vec::with_capacity(taille); + + for id in 0..taille { + operateurs.push(Operateur::new(id, Arc::clone(&reception))); + } + + GroupeTaches { operateurs, envoi } + } + + pub fn executer(&self, f: F) + where + F: FnOnce() + Send + 'static, + { + let mission = Box::new(f); + + self.envoi.send(Message::NouvelleMission(mission)).unwrap(); + } +} + +impl Drop for GroupeTaches { + fn drop(&mut self) { + println!("Envoi du message d'extinction à tous les opérateurs."); + + for _ in &self.operateurs { + self.envoi.send(Message::Extinction).unwrap(); + } + + println!("Arrêt de tous les opérateurs."); + + for operateur in &mut self.operateurs { + println!("Arrêt de l'opérateur {}", operateur.id); + + if let Some(tache) = operateur.tache.take() { + tache.join().unwrap(); + } + } + } +} + +struct Operateur { + id: usize, + tache: Option>, +} + +impl Operateur { + fn new(id: usize, reception: Arc>>) -> Operateur { + let tache = thread::spawn(move || loop { + let message = reception.lock().unwrap().recv().unwrap(); + + match message { + Message::NouvelleMission(mission) => { + println!("L'opérateur {} a reçu une mission ; il l'exécute.", id); + + mission(); + } + Message::Extinction => { + println!("L'opérateur {} a reçu l'instruction d'arrêt.", id); + + break; + } + } + }); + + Operateur { + id, + tache: Some(tache), + } + } +} diff --git a/FRENCH/src/ch20-03-graceful-shutdown-and-cleanup.md b/FRENCH/src/ch20-03-graceful-shutdown-and-cleanup.md index a7f2b8925d..2bf3ac7077 100644 --- a/FRENCH/src/ch20-03-graceful-shutdown-and-cleanup.md +++ b/FRENCH/src/ch20-03-graceful-shutdown-and-cleanup.md @@ -293,12 +293,12 @@ des instances de `Job`. Fichier : src/lib.rs -```rust +```rust,noplayground {{#rustdoc_include ../listings/ch20-web-server/no-listing-07-define-message-enum/src/lib.rs:here}} ``` @@ -639,12 +639,12 @@ Voici le code complet pour pouvoir vous y référer : ```rust,ignore -{{#rustdoc_include ../listings/ch20-web-server/listing-20-25/src/bin/main.rs:all}} +{{#rustdoc_include ../listings/ch20-web-server/no-listing-08-final-code/src/bin/main.rs}} ``` -```rust -{{#rustdoc_include ../listings/ch20-web-server/listing-20-25/src/lib.rs:here}} +```rust,noplayground +{{#rustdoc_include ../listings/ch20-web-server/no-listing-08-final-code/src/lib.rs}} ```