diff --git a/po/fr.po b/po/fr.po index 2bf04e8e..2cd3944f 100644 --- a/po/fr.po +++ b/po/fr.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Comprehensive Rust 🦀\n" "POT-Creation-Date: 2024-04-05T16:37:18-04:00\n" -"PO-Revision-Date: 2024-02-02 17:59-0500\n" +"PO-Revision-Date: 2024-04-08 18:27-0400\n" "Last-Translator: Olivier Charrez \n" "Language-Team: French \n" "Language: fr\n" @@ -10,7 +10,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" -"X-Generator: Poedit 3.4.1\n" +"X-Generator: Poedit 3.4.2\n" #: src/SUMMARY.md src/index.md msgid "Welcome to Comprehensive Rust 🦀" @@ -21474,3053 +21474,3 @@ msgstr "" "La section [Interopérabilité avec C++](android/interoperability/cpp.md) " "utilise un image de [CXX](https://cxx.rs/). Veuillez consulter le répertoire " "`third_party/cxx/` pour plus de détails, y compris les termes de la licence." - -#, fuzzy -#~ msgid "Static and Const" -#~ msgstr "static & const" - -#, fuzzy -#~ msgid "Slices and Lifetimes" -#~ msgstr "Durées de vie" - -#, fuzzy -#~ msgid "String References" -#~ msgstr "Références invalides" - -#~ msgid "Course schedule:" -#~ msgstr "Structure du cours:" - -#, fuzzy -#~ msgid "[Pattern Matching](../pattern-matching.md) (50 minutes)" -#~ msgstr "" -#~ "Voir [Filtrage par motif](../pattern-matching.md) pour plus de détails " -#~ "sur les motifs avec Rust." - -#, fuzzy -#~ msgid "Day 2 Afternoon (3 hours, including breaks)" -#~ msgstr "Exercices de l'après-midi du jour 2" - -#, fuzzy -#~ msgid "`String` - a modifiable, owned string." -#~ msgstr "`String` un tampon de chaîne mutable." - -#, fuzzy -#~ msgid "Much of the Rust syntax will be familiar to you from C, C++ or Java:" -#~ msgstr "" -#~ "Une grande partie de la syntaxe de Rust vous sera familière en C, C++ ou " -#~ "Java :" - -#, fuzzy -#~ msgid "Blocks are delimited by curly braces." -#~ msgstr "Les blocs et les portées sont délimités par des accolades." - -#, fuzzy -#~ msgid "" -#~ "Line comments are started with `//`, block comments are delimited by `/" -#~ "* ... */`." -#~ msgstr "" -#~ "Les commentaires de ligne commencent par `//`, les commentaires de bloc " -#~ "sont délimités par `/* ... */`." - -#, fuzzy -#~ msgid "Keywords like `if` and `while` work the same." -#~ msgstr "" -#~ "Des mots-clés comme `if` et `while` fonctionnent de la même manière." - -#, fuzzy -#~ msgid "Variable assignment is done with `=`, comparison is done with `==`." -#~ msgstr "" -#~ "L'affectation des variables se fait avec `=`, la comparaison se fait avec " -#~ "`==`." - -#, fuzzy -#~ msgid "" -#~ "In this case we break the outer loop after 3 iterations of the inner loop." -#~ msgstr "" -#~ "Dans ce cas, nous cassons la boucle externe après 3 itérations de la " -#~ "boucle interne." - -#, fuzzy -#~ msgid "Array assignment and access:" -#~ msgstr "Affectation et accès aux baies :" - -#, fuzzy -#~ msgid "Tuple assignment and access:" -#~ msgstr "Affectation et accès aux tuples :" - -#, fuzzy -#~ msgid "Arrays:" -#~ msgstr "Tableaux :" - -#, fuzzy -#~ msgid "Tuples:" -#~ msgstr "Tuples :" - -#, fuzzy -#~ msgid "" -#~ "The empty tuple `()` is also known as the \"unit type\". It is both a " -#~ "type, and the only valid value of that type --- that is to say both the " -#~ "type and its value are expressed as `()`. It is used to indicate, for " -#~ "example, that a function or expression has no return value, as we'll see " -#~ "in a future slide." -#~ msgstr "" -#~ "Le tuple vide `()` est également appelé \"type d'unité\". C'est à la fois " -#~ "un type et la seule valeur valide de ce type - c'est-à-dire à la fois le " -#~ "type et sa valeur sont exprimés par `()`. Il est utilisé pour indiquer, " -#~ "par exemple, qu'une fonction ou expression n'a pas de valeur de retour, " -#~ "comme nous le verrons dans une prochaine diapositive." - -#, fuzzy -#~ msgid "" -#~ "You can think of it as `void` that can be familiar to you from other " -#~ "programming languages." -#~ msgstr "" -#~ "Vous pouvez le considérer comme un \"vide\" qui peut vous être familier " -#~ "d'autres langages de programmation." - -#, fuzzy -#~ msgid "You can destructure tuples and arrays by matching on their elements:" -#~ msgstr "" -#~ "Vous pouvez déstructurer des tableaux, des tuples et des tranches en " -#~ "faisant correspondre leurs éléments :" - -#, fuzzy -#~ msgid "Lives for the entire duration of the program" -#~ msgstr "La fonction `main` est le point d'entrée du programme." - -#, fuzzy -#~ msgid "Evaluated at compile time" -#~ msgstr "" -#~ "Les valeurs ont des tailles fixes connues au moment de la compilation." - -#, fuzzy -#~ msgid "[Pattern Matching](./pattern-matching.md) (50 minutes)" -#~ msgstr "" -#~ "Voir [Filtrage par motif](../pattern-matching.md) pour plus de détails " -#~ "sur les motifs avec Rust." - -#, fuzzy -#~ msgid "" -#~ "A `Box` cannot be empty, so the pointer is always valid and non-`null`. " -#~ "This allows the compiler to optimize the memory layout:" -#~ msgstr "" -#~ "Une `Box` ne peut pas être vide, donc le pointeur est toujours valide et " -#~ "non `null`. Ce permet au compilateur d'optimiser la disposition de la " -#~ "mémoire :" - -#, fuzzy -#~ msgid "Rust terminology:" -#~ msgstr "Terminologie de Rust :" - -#, fuzzy -#~ msgid "`&str` an immutable reference to a string slice." -#~ msgstr "`&str` une référence immuable à une tranche de chaîne." - -#, fuzzy -#~ msgid "`String` a mutable string buffer." -#~ msgstr "`String` un tampon de chaîne mutable." - -#, fuzzy -#~ msgid "Rust comes with only basic support for writing tests." -#~ msgstr "Rust a un support intégré pour les tests de documentation :" - -#, fuzzy -#~ msgid "" -#~ "Add `vendor_available: true` if your AIDL file is used by a binary in the " -#~ "vendor partition." -#~ msgstr "" -#~ "Ajoutez `vendor_available : true` si votre fichier AIDL est utilisé par " -#~ "un binaire dans le fournisseur cloison." - -#, fuzzy -#~ msgid "\"aarch64-linux-gnu\"" -#~ msgstr "aarch64-paging" - -#, fuzzy -#~ msgid "\"exceptions.S\"" -#~ msgstr "Exceptions" - -#, fuzzy -#~ msgid "aarch64-linux-gnu" -#~ msgstr "aarch64-paging" - -#, fuzzy -#~ msgid "" -#~ "Notice that the thread is stopped before it reaches 10 --- the main " -#~ "thread is not waiting." -#~ msgstr "" -#~ "Notez que le thread est arrêté avant d'atteindre 10 — le thread principal " -#~ "est pas attendre." - -#, fuzzy -#~ msgid "" -#~ "You will also need a way to find links. We can use [`scraper`](https://" -#~ "docs.rs/scraper/) for that:" -#~ msgstr "" -#~ "Vous aurez également besoin d'un moyen de trouver des liens. Nous pouvons " -#~ "utiliser [`scraper`](https://docs.rs/scraper/) pour cela :" - -#, fuzzy -#~ msgid "" -#~ "Finally, we'll need some way of handling errors. We use [`thiserror`]" -#~ "(https://docs.rs/thiserror/) for that:" -#~ msgstr "" -#~ "Enfin, nous aurons besoin d'un moyen de gérer les erreurs. Nous utilisons " -#~ "[`thiserror`](https://docs.rs/thiserror/) pour ce:" - -#, fuzzy -#~ msgid "With C++)" -#~ msgstr "Avec C++" - -#, fuzzy -#~ msgid "" -#~ "Let us design a classical GUI library using our new knowledge of traits " -#~ "and trait objects. We'll only implement the drawing of it (as text) for " -#~ "simplicity." -#~ msgstr "" -#~ "Concevons une bibliothèque d'interface graphique classique en utilisant " -#~ "nos nouvelles connaissances sur les traits et objets trait." - -#, fuzzy -#~ msgid "We will have a number of widgets in our library:" -#~ msgstr "Nous aurons un certain nombre de widgets dans notre bibliothèque :" - -#, fuzzy -#~ msgid "`Window`: has a `title` and contains other widgets." -#~ msgstr "`Window` : a un `title` et contient d'autres widgets." - -#, fuzzy -#~ msgid "`Label`: has a `label`." -#~ msgstr "`Label` : a un `label`." - -#, fuzzy -#~ msgid "The widgets will implement a `Widget` trait, see below." -#~ msgstr "Les widgets implémenteront un trait `Widget`, voir ci-dessous." - -#, fuzzy -#~ msgid "" -#~ "Copy the code below to , fill in the missing " -#~ "`draw_into` methods so that you implement the `Widget` trait:" -#~ msgstr "" -#~ "Copiez le code ci-dessous sur , remplissez " -#~ "les champs manquants méthodes `draw_into` afin que vous implémentiez le " -#~ "trait `Widget` :" - -#, fuzzy -#~ msgid "The output of the above program can be something simple like this:" -#~ msgstr "" -#~ "La sortie du programme ci-dessus peut être quelque chose de simple comme " -#~ "ceci :" - -#, fuzzy -#~ msgid "" -#~ "If you want to draw aligned text, you can use the [fill/alignment]" -#~ "(https://doc.rust-lang.org/std/fmt/index.html#fillalignment) formatting " -#~ "operators. In particular, notice how you can pad with different " -#~ "characters (here a `'/'`) and how you can control alignment:" -#~ msgstr "" -#~ "Si vous voulez dessiner du texte aligné, vous pouvez utiliser le " -#~ "[remplissage/alignement](https://doc.rust-lang.org/std/fmt/index." -#~ "html#fillalignment) opérateurs de formatage. En particulier, notez " -#~ "comment vous pouvez compléter avec différents caractères (ici un `'/'`) " -#~ "et comment vous pouvez contrôler l'alignement :" - -#, fuzzy -#~ msgid "" -#~ "Using such alignment tricks, you can for example produce output like this:" -#~ msgstr "" -#~ "En utilisant de telles astuces d'alignement, vous pouvez par exemple " -#~ "produire une sortie comme celle-ci :" - -#, fuzzy -#~ msgid "" -#~ "In the above example, you can even leave out the `*` in the `println!` " -#~ "statement thanks to `Deref`." -#~ msgstr "" -#~ "Dans l'exemple ci-dessus, vous pouvez même omettre le `*` dans " -#~ "l'instruction `println!` grâce à `Deref`." - -#, fuzzy -#~ msgid "" -#~ "[`Cell`](https://doc.rust-lang.org/std/cell/struct.Cell.html) and " -#~ "[`RefCell`](https://doc.rust-lang.org/std/cell/struct.RefCell.html) " -#~ "implement what Rust calls _interior mutability:_ mutation of values in an " -#~ "immutable context." -#~ msgstr "" -#~ "En utilisant [`Read`](https://doc.rust-lang.org/std/io/trait.Read.html) " -#~ "et [`BufRead`](https://doc.rust-lang.org/std/io/trait.BufRead.html), vous " -#~ "pouvez résumer les sources `u8` :" - -#, fuzzy -#~ msgid "" -#~ "It's generally helpful for them to implement `Clone` and `Eq` too where " -#~ "possible, to make life easier for tests and consumers of your library. In " -#~ "this case we can't easily do so, because `io::Error` doesn't implement " -#~ "them." -#~ msgstr "" -#~ "C'est une bonne pratique pour tous les types d'erreurs d'implémenter " -#~ "`std::error::Error`, qui nécessite `Debug` et 'Affichage'. Il est " -#~ "généralement utile pour eux d'implémenter `Clone` et `Eq` aussi lorsque " -#~ "cela est possible, pour faire la vie plus facile pour les testeurs et les " -#~ "consommateurs de votre bibliothèque. Dans ce cas, nous ne pouvons pas le " -#~ "faire facilement, car `io::Error` ne les implémente pas." - -#, fuzzy -#~ msgid "`thiserror` and `anyhow`" -#~ msgstr "`De` et `Dans`" - -#~ msgid "Small Example" -#~ msgstr "Petit exemple" - -#~ msgid "Why Rust?" -#~ msgstr "Pourquoi Rust ?" - -#, fuzzy -#~ msgid "An Example in C" -#~ msgstr "C Exemple" - -#~ msgid "Compile Time Guarantees" -#~ msgstr "Garanties à la compilation" - -#~ msgid "Runtime Guarantees" -#~ msgstr "Garanties à l'exécution" - -#~ msgid "Modern Features" -#~ msgstr "Fonctionnalités modernes" - -#~ msgid "Basic Syntax" -#~ msgstr "Syntaxe de base" - -#~ msgid "String vs str" -#~ msgstr "String vs str" - -#~ msgid "Rustdoc" -#~ msgstr "Rustdoc" - -#~ msgid "Overloading" -#~ msgstr "Surcharge" - -#~ msgid "Arrays and for Loops" -#~ msgstr "Tableaux et boucles for" - -#~ msgid "if expressions" -#~ msgstr "expressions `if`" - -#~ msgid "for expressions" -#~ msgstr "expressions `for`" - -#~ msgid "while expressions" -#~ msgstr "expressions `while`" - -#~ msgid "break & continue" -#~ msgstr "break & continue" - -#~ msgid "loop expressions" -#~ msgstr "expressions `loop`" - -#~ msgid "Variant Payloads" -#~ msgstr "Contenu variable" - -#~ msgid "Enum Sizes" -#~ msgstr "Tailles d'énumération" - -#~ msgid "Novel Control Flow" -#~ msgstr "Nouvelles structures de contrôle" - -#~ msgid "if let expressions" -#~ msgstr "Expressions `if let`" - -#~ msgid "while let expressions" -#~ msgstr "Expressions `while let`" - -#~ msgid "match expressions" -#~ msgstr "Expressions `match`" - -#~ msgid "Destructuring Structs" -#~ msgstr "Déstructuration des structures" - -#~ msgid "Destructuring Arrays" -#~ msgstr "Déstructuration des tableaux" - -#~ msgid "Match Guards" -#~ msgstr "Contrôle de correspondance" - -#~ msgid "Stack vs Heap" -#~ msgstr "Pile et Tas" - -#~ msgid "Stack Memory" -#~ msgstr "Mémoire de pile" - -#~ msgid "Manual Memory Management" -#~ msgstr "Gestion manuelle de la mémoire" - -#~ msgid "Scope-Based Memory Management" -#~ msgstr "Gestion de la mémoire basée sur la portée" - -#~ msgid "Garbage Collection" -#~ msgstr "Ramasse-miettes" - -#~ msgid "Rust Memory Management" -#~ msgstr "Gestion de la mémoire avec Rust" - -#~ msgid "Moved Strings in Rust" -#~ msgstr "String déplacés avec Rust" - -#~ msgid "Double Frees in Modern C++" -#~ msgstr "Double libération de mémoire en C++ moderne" - -#~ msgid "Moves in Function Calls" -#~ msgstr "Déplacements dans les appels de fonction" - -#~ msgid "Copying and Cloning" -#~ msgstr "Copie et clonage" - -#~ msgid "Shared and Unique Borrows" -#~ msgstr "Emprunts partagés et uniques" - -#~ msgid "Field Shorthand Syntax" -#~ msgstr "Syntaxe abrégée des champs" - -#~ msgid "Method Receiver" -#~ msgstr "Récepteur de méthode" - -#~ msgid "Storing Books" -#~ msgstr "Stockage des livres" - -#~ msgid "Option and Result" -#~ msgstr "Option et Result" - -#~ msgid "Vec" -#~ msgstr "Vec" - -#~ msgid "HashMap" -#~ msgstr "HashMap" - -#~ msgid "Box" -#~ msgstr "Box" - -#~ msgid "Recursive Data Types" -#~ msgstr "Types de données récursifs" - -#~ msgid "Rc" -#~ msgstr "Rc" - -#~ msgid "Iterators and Ownership" -#~ msgstr "Itérateurs et propriété" - -#~ msgid "Strings and Iterators" -#~ msgstr "Strings et Iterateurs" - -#~ msgid "Generic Methods" -#~ msgstr "Méthodes génériques" - -#~ msgid "Monomorphization" -#~ msgstr "Monomorphisation" - -#~ msgid "Default Methods" -#~ msgstr "Méthodes par défaut" - -#~ msgid "impl Trait" -#~ msgstr "impl Trait" - -#~ msgid "Important Traits" -#~ msgstr "Traits importants" - -#~ msgid "From and Into" -#~ msgstr "From et Into" - -#~ msgid "Default" -#~ msgstr "Default" - -#~ msgid "Operators: Add, Mul, ..." -#~ msgstr "Opérateurs : Add, Mul, ..." - -#~ msgid "Closures: Fn, FnMut, FnOnce" -#~ msgstr "Fermetures: Fn, FnMut, FnOnce" - -#~ msgid "Points and Polygons" -#~ msgstr "Points et polygones" - -#~ msgid "Catching Stack Unwinding" -#~ msgstr "Suspension du déroulement de la pile" - -#~ msgid "Structured Error Handling" -#~ msgstr "Gestion structurée des erreurs" - -#~ msgid "Propagating Errors with ?" -#~ msgstr "Propagation des erreurs avec ?" - -#~ msgid "Converting Error Types" -#~ msgstr "Conversion des types d'erreur" - -#~ msgid "Deriving Error Enums" -#~ msgstr "Dérivation des énumérations d'erreur" - -#~ msgid "Adding Context to Errors" -#~ msgstr "Ajout de contexte aux erreurs" - -#~ msgid "no_std" -#~ msgstr "no_std" - -#~ msgid "alloc" -#~ msgstr "alloc" - -#~ msgid "embedded-hal" -#~ msgstr "embedded-hal" - -#~ msgid "probe-rs, cargo-embed" -#~ msgstr "probe-rs, cargo-embed" - -#~ msgid "zerocopy" -#~ msgstr "zerocopy" - -#~ msgid "buddy_system_allocator" -#~ msgstr "buddy_system_allocator" - -#~ msgid "tinyvec" -#~ msgstr "tinyvec" - -#~ msgid "spin" -#~ msgstr "spin" - -#~ msgid "Send and Sync" -#~ msgstr "Send et Sync" - -#~ msgid "Send" -#~ msgstr "Send" - -#~ msgid "Sync" -#~ msgstr "Sync" - -#~ msgid "Arc" -#~ msgstr "Arc" - -#~ msgid "Mutex" -#~ msgstr "Mutex" - -#~ msgid "async/await" -#~ msgstr "async/await" - -#~ msgid "Day 1 Morning" -#~ msgstr "Jour 1 Matin" - -#~ msgid "Day 1 Afternoon" -#~ msgstr "Jour 1 Après-midi" - -#~ msgid "Day 2 Morning" -#~ msgstr "Jour 2 Matin" - -#~ msgid "Day 2 Afternoon" -#~ msgstr "Jour 2 Après-midi" - -#~ msgid "Day 3 Morning" -#~ msgstr "Jour 3 Matin" - -#~ msgid "Day 3 Afternoon" -#~ msgstr "Jour 3 Après-midi" - -#~ msgid "Bare Metal Rust Morning" -#~ msgstr "Bare Metal Rust Matin" - -#~ msgid "Concurrency Morning" -#~ msgstr "Matin concurrence" - -#~ msgid "Concurrency Afternoon" -#~ msgstr "Après-midi concurrence" - -#~ msgid "" -#~ "Day 1: Basic Rust, syntax, control flow, creating and consuming values." -#~ msgstr "" -#~ "Jour 1 : bases de Rust, syntaxe, flux de contrôle, création et " -#~ "consommation de valeurs." - -#~ msgid "" -#~ "Day 2: Memory management, ownership, compound data types, and the " -#~ "standard library." -#~ msgstr "" -#~ "Jour 2 : gestion de la mémoire, possession, types composés, bibliothèque " -#~ "standard." - -#~ msgid "Day 3: Generics, traits, error handling, testing, and unsafe Rust." -#~ msgstr "" -#~ "Jour 3 : génériques, caractéristiques, gestion des erreurs, tests, Rust " -#~ "non sécurisé (_unsafe_)." - -#, fuzzy -#~ msgid "" -#~ "Control flow constructs: `if`, `if let`, `while`, `while let`, `break`, " -#~ "and `continue`." -#~ msgstr "" -#~ "Constructions de flux de contrôle : `if`, `if let`, `while`, `while let`, " -#~ "`break` et 'continuer'." - -#~ msgid "" -#~ "The idea for the first day is to show _just enough_ of Rust to be able to " -#~ "speak about the famous borrow checker. The way Rust handles memory is a " -#~ "major feature and we should show students this right away." -#~ msgstr "" -#~ "L'idée du premier jour est de montrer _juste assez_ de Rust pour pouvoir " -#~ "parler du célèbre vérificateur d'emprunt. La façon dont Rust gère la " -#~ "mémoire est une caractéristique majeure et nous devrions montrer cela aux " -#~ "élèves tout de suite." - -#~ msgid "" -#~ "If you're teaching this in a classroom, this is a good place to go over " -#~ "the schedule. We suggest splitting the day into two parts (following the " -#~ "slides):" -#~ msgstr "" -#~ "Si vous enseignez cela dans une salle de classe, c'est un bon endroit " -#~ "pour passer en revue le calendrier. Nous suggérons de diviser la journée " -#~ "en deux parties (suivant les diapositives) :" - -#~ msgid "Morning: 9:00 to 12:00," -#~ msgstr "Matin : 9h00 à 12h00," - -#~ msgid "Afternoon: 13:00 to 16:00." -#~ msgstr "Après-midi : 13h00 à 16h00." - -#~ msgid "" -#~ "You can of course adjust this as necessary. Please make sure to include " -#~ "breaks, we recommend a break every hour!" -#~ msgstr "" -#~ "Vous pouvez bien sûr ajuster cela si nécessaire. Assurez-vous d'inclure " -#~ "les pauses, nous recommandons une pause toutes les heures !" - -#, fuzzy -#~ msgid "" -#~ "```rust,editable\n" -#~ "fn main() {\n" -#~ " println!(\"Hello 🌍!\");\n" -#~ "}\n" -#~ "```" -#~ msgstr "" -#~ "```rust\n" -#~ "fn main() {\n" -#~ " println!(\"Bonjour 🌍!\");\n" -#~ "}\n" -#~ "```" - -#~ msgid "Here is a small example program in Rust:" -#~ msgstr "Voici un petit exemple de programme en Rust :" - -#~ msgid "" -#~ "```rust,editable\n" -#~ "fn main() { // Program entry point\n" -#~ " let mut x: i32 = 6; // Mutable variable binding\n" -#~ " print!(\"{x}\"); // Macro for printing, like printf\n" -#~ " while x != 1 { // No parenthesis around expression\n" -#~ " if x % 2 == 0 { // Math like in other languages\n" -#~ " x = x / 2;\n" -#~ " } else {\n" -#~ " x = 3 * x + 1;\n" -#~ " }\n" -#~ " print!(\" -> {x}\");\n" -#~ " }\n" -#~ " println!();\n" -#~ "}\n" -#~ "```" -#~ msgstr "" -#~ "```rust,editable\n" -#~ "fn main() { // Entrée du programme\n" -#~ " let mut x: i32 = 6; // Liaison mutable de variable\n" -#~ " print!(\"{x}\"); // Macro pour impression, comme printf\n" -#~ " while x != 1 { // Pas de parenthèses autour des expressions\n" -#~ " if x % 2 == 0 { // Les mathématiques comme dans d'autre " -#~ "langages\n" -#~ " x = x / 2;\n" -#~ " } else {\n" -#~ " x = 3 * x + 1;\n" -#~ " }\n" -#~ " print!(\" -> {x}\");\n" -#~ " }\n" -#~ " println!();\n" -#~ "}\n" -#~ "```" - -#~ msgid "" -#~ "The code implements the Collatz conjecture: it is believed that the loop " -#~ "will always end, but this is not yet proved. Edit the code and play with " -#~ "different inputs." -#~ msgstr "" -#~ "Le code implémente la conjecture de Collatz : on pense que la boucle " -#~ "finissent toujours, mais cela n'est pas encore prouvé. Modifiez le code " -#~ "et jouez avec différentes entrées." - -#, fuzzy -#~ msgid "" -#~ "Explain that all variables are statically typed. Try removing `i32` to " -#~ "trigger type inference. Try with `i8` instead and trigger a runtime " -#~ "integer overflow." -#~ msgstr "" -#~ "Expliquez que toutes les variables sont typées statiquement. Essayez de " -#~ "supprimer `i32` pour déclencher l'inférence de type. Essayez avec `i8` à " -#~ "la place et déclenchez un débordement d'entier à l'exécution." - -#, fuzzy -#~ msgid "Change `let mut x` to `let x`, discuss the compiler error." -#~ msgstr "" -#~ "Remplacez `let mut x` par `let x`, discutez de l'erreur du compilateur." - -#, fuzzy -#~ msgid "" -#~ "Show how `print!` gives a compilation error if the arguments don't match " -#~ "the format string." -#~ msgstr "" -#~ "Montrez comment `print!` génère une erreur de compilation si les " -#~ "arguments ne correspondent pas aux format des string." - -#, fuzzy -#~ msgid "" -#~ "Show how you need to use `{}` as a placeholder if you want to print an " -#~ "expression which is more complex than just a single variable." -#~ msgstr "" -#~ "Montrez comment vous devez utiliser `{}` comme espace réservé si vous " -#~ "souhaitez imprimer une expression qui est plus complexe qu'une simple " -#~ "variable." - -#, fuzzy -#~ msgid "" -#~ "Show the students the standard library, show them how to search for `std::" -#~ "fmt` which has the rules of the formatting mini-language. It's important " -#~ "that the students become familiar with searching in the standard library." -#~ msgstr "" -#~ "Montrez aux étudiants la bibliothèque standard, montrez-leur comment " -#~ "rechercher `std :: fmt` qui a les règles du mini-langage de formatage. Il " -#~ "est important que le les étudiants se familiarisent avec la recherche " -#~ "dans la bibliothèque standard." - -#~ msgid "Compile time memory safety." -#~ msgstr "Sécurité de la mémoire à la compilation." - -#~ msgid "Lack of undefined runtime behavior." -#~ msgstr "Absence de comportement d'exécution indéfini." - -#~ msgid "Modern language features." -#~ msgstr "Caractéristiques d'un langage moderne." - -#~ msgid "Static memory management at compile time:" -#~ msgstr "Gestion de la mémoire statique à la compilation :" - -#~ msgid "No memory leaks (_mostly_, see notes)." -#~ msgstr "Aucune fuite de mémoire (_surtout_, voir les notes)." - -#~ msgid "" -#~ "It is possible to produce memory leaks in (safe) Rust. Some examples are:" -#~ msgstr "" -#~ "Il est possible de produire des fuites de mémoire avec Rust (sûr). " -#~ "Quelques exemples sont:" - -#, fuzzy -#~ msgid "" -#~ "You can use [`Box::leak`](https://doc.rust-lang.org/std/boxed/struct.Box." -#~ "html#method.leak) to leak a pointer. A use of this could be to get " -#~ "runtime-initialized and runtime-sized static variables" -#~ msgstr "" -#~ "Vous pouvez utiliser [`Box::leak`](https://doc.rust-lang.org/std/boxed/" -#~ "struct.Box.html#method.leak) pour divulguer un pointeur. Une utilisation " -#~ "de cela pourrait être d'obtenir des variables statiques initialisées et " -#~ "dimensionnées à l'exécution" - -#, fuzzy -#~ msgid "" -#~ "You can use [`std::mem::forget`](https://doc.rust-lang.org/std/mem/fn." -#~ "forget.html) to make the compiler \"forget\" about a value (meaning the " -#~ "destructor is never run)." -#~ msgstr "" -#~ "Vous pouvez utiliser [`std::mem::forget`](https://doc.rust-lang.org/std/" -#~ "mem/fn.forget.html) pour que le compilateur \"oublie\" une valeur (ce qui " -#~ "signifie que le destructeur n'est jamais exécuté)." - -#, fuzzy -#~ msgid "" -#~ "You can also accidentally create a [reference cycle](https://doc.rust-" -#~ "lang.org/book/ch15-06-reference-cycles.html) with `Rc` or `Arc`." -#~ msgstr "" -#~ "Vous pouvez également créer accidentellement un \\[cycle de référence\\] " -#~ "avec `Rc` ou \"Arc\"." - -#, fuzzy -#~ msgid "" -#~ "In fact, some will consider infinitely populating a collection a memory " -#~ "leak and Rust does not protect from those." -#~ msgstr "" -#~ "En fait, certains considéreront le fait de peupler à l'infini une " -#~ "collection tel qu'une fuite de mémoire et Rust ne protège pas de celles-" -#~ "ci." - -#~ msgid "" -#~ "For the purpose of this course, \"No memory leaks\" should be understood " -#~ "as \"Pretty much no _accidental_ memory leaks\"." -#~ msgstr "" -#~ "Pour les besoins de ce cours, \"Aucune fuite de mémoire\" doit être " -#~ "compris comme \"Pratiquement pas de fuites de mémoire _accidentelles_\"." - -#, fuzzy -#~ msgid "" -#~ "Integer overflow is defined via the [`overflow-checks`](https://doc.rust-" -#~ "lang.org/rustc/codegen-options/index.html#overflow-checks) compile-time " -#~ "flag. If enabled, the program will panic (a controlled crash of the " -#~ "program), otherwise you get wrap-around semantics. By default, you get " -#~ "panics in debug mode (`cargo build`) and wrap-around in release mode " -#~ "(`cargo build --release`)." -#~ msgstr "" -#~ "Le débordement d'entier est défini via un indicateur de compilation. Les " -#~ "options sont soit une panique (un plantage contrôlé du programme) ou un " -#~ "bouclage sémantique. Par défaut, vous obtenez des paniques en mode " -#~ "débogage (`cargo build`) et bouclage en mode release (`cargo build --" -#~ "release`)." - -#, fuzzy -#~ msgid "" -#~ "Bounds checking cannot be disabled with a compiler flag. It can also not " -#~ "be disabled directly with the `unsafe` keyword. However, `unsafe` allows " -#~ "you to call functions such as `slice::get_unchecked` which does not do " -#~ "bounds checking." -#~ msgstr "" -#~ "La vérification des limites ne peut pas être désactivée avec un " -#~ "indicateur de compilateur. Ça peut aussi ne pas être désactivé " -#~ "directement avec le mot-clé `unsafe`. Cependant, `unsafe` vous permet " -#~ "d'appeler des fonctions telles que `slice::get_unchecked` qui ne vérifie " -#~ "pas les bornes." - -#, fuzzy -#~ msgid "Rust is built with all the experience gained in the last decades." -#~ msgstr "" -#~ "Rust est construit avec toute l'expérience acquise au cours des 40 " -#~ "dernières années." - -#, fuzzy -#~ msgid "Language Features" -#~ msgstr "Caractéristiques linguistiques" - -#, fuzzy -#~ msgid "Tooling" -#~ msgstr "Outillage" - -#, fuzzy -#~ msgid "" -#~ "Zero-cost abstractions, similar to C++, means that you don't have to " -#~ "'pay' for higher-level programming constructs with memory or CPU. For " -#~ "example, writing a loop using `for` should result in roughly the same low " -#~ "level instructions as using the `.iter().fold()` construct." -#~ msgstr "" -#~ "Les abstractions à coût nul, similaires à C++, signifient que vous n'avez " -#~ "pas à \"payer\" pour les constructions de programmation de niveau " -#~ "supérieur avec mémoire ou CPU. Par exemple, écrire une boucle en " -#~ "utilisant `for` devrait aboutir à peu près au même niveau bas " -#~ "instructions comme utilisant la construction `.iter().fold()`." - -#, fuzzy -#~ msgid "" -#~ "It may be worth mentioning that Rust enums are 'Algebraic Data Types', " -#~ "also known as 'sum types', which allow the type system to express things " -#~ "like `Option` and `Result`." -#~ msgstr "" -#~ "Il peut être utile de mentionner que les énumérations Rust sont des " -#~ "\"types de données algébriques\", également connus sous le nom de \"types " -#~ "de somme\", qui permettent au système de type d'exprimer des choses comme " -#~ "`Option` et `Résultat`." - -#, fuzzy -#~ msgid "" -#~ "Remind people to read the errors --- many developers have gotten used to " -#~ "ignore lengthy compiler output. The Rust compiler is significantly more " -#~ "talkative than other compilers. It will often provide you with " -#~ "_actionable_ feedback, ready to copy-paste into your code." -#~ msgstr "" -#~ "Rappelez aux gens de lire les erreurs --- de nombreux développeurs se " -#~ "sont habitués à ignorer la longue sortie du compilateur. Le compilateur " -#~ "Rust est beaucoup plus bavard que les autres compilateurs. Il vous " -#~ "fournira souvent _actionnable_ feedback, prêt à copier-coller dans votre " -#~ "code." - -#~ msgid "" -#~ "The Rust standard library is small compared to languages like Java, " -#~ "Python, and Go. Rust does not come with several things you might consider " -#~ "standard and essential:" -#~ msgstr "" -#~ "La bibliothèque standard de Rust est petite comparée à des langages comme " -#~ "Java, Python, et Go. Rust n'est pas distribué avec certains éléments que " -#~ "vous pourriez considérer comme standard et essentiel:" - -#, fuzzy -#~ msgid "a random number generator, but see [rand](https://docs.rs/rand/)." -#~ msgstr "" -#~ "un générateur de nombres aléatoires, mais voir [rand](https://docs.rs/" -#~ "rand/)." - -#, fuzzy -#~ msgid "support for SSL or TLS, but see [rusttls](https://docs.rs/rustls/)." -#~ msgstr "" -#~ "prise en charge de SSL ou TLS, mais voir [rusttls](https://docs.rs/" -#~ "rustls/)." - -#, fuzzy -#~ msgid "support for JSON, but see [serde_json](https://docs.rs/serde_json/)." -#~ msgstr "" -#~ "support pour JSON, mais voir [serde_json](https://docs.rs/serde_json/)." - -#, fuzzy -#~ msgid "" -#~ "The reasoning behind this is that functionality in the standard library " -#~ "cannot go away, so it has to be very stable. For the examples above, the " -#~ "Rust community is still working on finding the best solution --- and " -#~ "perhaps there isn't a single \"best solution\" for some of these things." -#~ msgstr "" -#~ "Le raisonnement sous-jacent est que la fonctionnalité de la bibliothèque " -#~ "standard ne peut pas s'en aller, il doit donc être très stable. Pour les " -#~ "exemples ci-dessus, le Rust la communauté travaille toujours à trouver la " -#~ "meilleure solution --- et peut-être là n'est pas une seule \"meilleure " -#~ "solution\" pour certaines de ces choses." - -#, fuzzy -#~ msgid "" -#~ "Rust comes with a built-in package manager in the form of Cargo and this " -#~ "makes it trivial to download and compile third-party crates. A " -#~ "consequence of this is that the standard library can be smaller." -#~ msgstr "" -#~ "Rust est livré avec un gestionnaire de packages intégré sous la forme de " -#~ "Cargo, ce qui rend il est trivial de télécharger et de compiler des " -#~ "caisses tierces. Une conséquence de ce est que la bibliothèque standard " -#~ "peut être plus petite." - -#, fuzzy -#~ msgid "" -#~ "Discovering good third-party crates can be a problem. Sites like help with this by letting you compare health metrics for crates " -#~ "to find a good and trusted one." -#~ msgstr "" -#~ "Découvrir de bonnes caisses tierces peut être un problème. Des sites " -#~ "comme aide à cela en vous permettant de comparer les " -#~ "mesures de santé pour caisses pour en trouver une bonne et de confiance." - -#, fuzzy -#~ msgid "" -#~ "[rust-analyzer](https://rust-analyzer.github.io/) is a well supported LSP " -#~ "implementation used in major IDEs and text editors." -#~ msgstr "" -#~ "[rust-analyzer](https://rust-analyzer.github.io/) est une implémentation " -#~ "LSP bien prise en charge utilisée dans les principaux IDE et éditeurs de " -#~ "texte." - -#, fuzzy -#~ msgid "`\"foo\"`, `\"two\\nlines\"`" -#~ msgstr "`\"foo\"`, `r#\"\\\\\"#`" - -#, fuzzy -#~ msgid "Like C++, Rust has references:" -#~ msgstr "Comme C++, Rust a des références :" - -#, fuzzy -#~ msgid "" -#~ "We must dereference `ref_x` when assigning to it, similar to C and C++ " -#~ "pointers." -#~ msgstr "" -#~ "Nous devons déréférencer `ref_x` lors de son affectation, comme pour les " -#~ "pointeurs C et C++." - -#, fuzzy -#~ msgid "" -#~ "References that are declared as `mut` can be bound to different values " -#~ "over their lifetime." -#~ msgstr "" -#~ "Les références déclarées comme \"mut\" peuvent être liées à différentes " -#~ "valeurs au cours de leur durée de vie." - -#, fuzzy -#~ msgid "A reference is said to \"borrow\" the value it refers to." -#~ msgstr "" -#~ "Une référence est dite \"emprunter\" la valeur à laquelle elle se réfère." - -#, fuzzy -#~ msgid "" -#~ "Rust is tracking the lifetimes of all references to ensure they live long " -#~ "enough." -#~ msgstr "" -#~ "Rust suit la durée de vie de toutes les références pour s'assurer " -#~ "qu'elles durent longtemps assez." - -#, fuzzy -#~ msgid "`String` vs `str`" -#~ msgstr "`Chaîne` vs `chaîne`" - -#, fuzzy -#~ msgid "" -#~ "A Rust version of the famous [FizzBuzz](https://en.wikipedia.org/wiki/" -#~ "Fizz_buzz) interview question:" -#~ msgstr "" -#~ "Une version Rust de la célèbre question d'entrevue [FizzBuzz](https://en." -#~ "wikipedia.org/wiki/Fizz_buzz) :" - -#, fuzzy -#~ msgid "" -#~ "All language items in Rust can be documented using special `///` syntax." -#~ msgstr "" -#~ "Tous les éléments de langage de Rust peuvent être documentés à l'aide de " -#~ "la syntaxe spéciale `///`." - -#, fuzzy -#~ msgid "" -#~ "This course does not include rustdoc on slides, just to save space, but " -#~ "in real code they should be present." -#~ msgstr "" -#~ "Ce cours n'inclut pas rustdoc sur les diapositives, juste pour économiser " -#~ "de l'espace, mais dans code réel, ils doivent être présents." - -#, fuzzy -#~ msgid "" -#~ "Inner doc comments are discussed later (in the page on modules) and need " -#~ "not be addressed here." -#~ msgstr "" -#~ "Les commentaires de la documentation interne sont discutés plus tard " -#~ "(dans la page sur les modules) et n'ont pas besoin être abordé ici." - -#, fuzzy -#~ msgid "" -#~ "Methods are functions associated with a type. The `self` argument of a " -#~ "method is an instance of the type it is associated with:" -#~ msgstr "" -#~ "Rust a des méthodes, ce sont simplement des fonctions qui sont associées " -#~ "à un type particulier. Le le premier argument d'une méthode est une " -#~ "instance du type auquel elle est associée :" - -#, fuzzy -#~ msgid "" -#~ "We will look much more at methods in today's exercise and in tomorrow's " -#~ "class." -#~ msgstr "" -#~ "Nous nous pencherons beaucoup plus sur les méthodes dans l'exercice " -#~ "d'aujourd'hui et dans le cours de demain." - -#, fuzzy -#~ msgid "Function Overloading" -#~ msgstr "Surcharge de fonction" - -#, fuzzy -#~ msgid "Overloading is not supported:" -#~ msgstr "La surcharge n'est pas prise en charge :" - -#, fuzzy -#~ msgid "Always takes a fixed number of parameters." -#~ msgstr "Prend toujours un nombre fixe de paramètres." - -#, fuzzy -#~ msgid "Default values are not supported:" -#~ msgstr "Les valeurs par défaut ne sont pas prises en charge :" - -#, fuzzy -#~ msgid "All call sites have the same number of arguments." -#~ msgstr "Tous les sites d'appel ont le même nombre d'arguments." - -#, fuzzy -#~ msgid "Macros are sometimes used as an alternative." -#~ msgstr "Les macros sont parfois utilisées comme alternative." - -#, fuzzy -#~ msgid "However, function parameters can be generic:" -#~ msgstr "Cependant, les paramètres de fonction peuvent être génériques :" - -#, fuzzy -#~ msgid "" -#~ "When using generics, the standard library's `Into` can provide a kind " -#~ "of limited polymorphism on argument types. We will see more details in a " -#~ "later section." -#~ msgstr "" -#~ "Lors de l'utilisation de génériques, la bibliothèque standard `Into` " -#~ "peut fournir une sorte de polymorphisme sur les types d'arguments. Nous " -#~ "verrons plus de détails dans une section ultérieure." - -#, fuzzy -#~ msgid "Day 1: Morning Exercises" -#~ msgstr "Jour 1 : Exercices du matin" - -#, fuzzy -#~ msgid "In these exercises, we will explore two parts of Rust:" -#~ msgstr "Dans ces exercices, nous allons explorer deux parties de Rust :" - -#, fuzzy -#~ msgid "Implicit conversions between types." -#~ msgstr "Conversions implicites entre les types." - -#, fuzzy -#~ msgid "Arrays and `for` loops." -#~ msgstr "Tableaux et boucles \"for\"." - -#, fuzzy -#~ msgid "A few things to consider while solving the exercises:" -#~ msgstr "Quelques points à considérer lors de la résolution des exercices :" - -#, fuzzy -#~ msgid "" -#~ "Use a local Rust installation, if possible. This way you can get auto-" -#~ "completion in your editor. See the page about [Using Cargo](../../cargo." -#~ "md) for details on installing Rust." -#~ msgstr "" -#~ "Utilisez une installation Rust locale, si possible. De cette façon, vous " -#~ "pouvez obtenir auto-complétion dans votre éditeur. Voir la page sur " -#~ "\\[Utiliser Cargo\\] pour plus de détails lors de l'installation de Rust." - -#, fuzzy -#~ msgid "Alternatively, use the Rust Playground." -#~ msgstr "Vous pouvez également utiliser le Rust Playground." - -#, fuzzy -#~ msgid "" -#~ "The code snippets are not editable on purpose: the inline code snippets " -#~ "lose their state if you navigate away from the page." -#~ msgstr "" -#~ "Les extraits de code ne sont pas modifiables à dessein : les extraits de " -#~ "code en ligne perdent leur état si vous quittez la page." - -#, fuzzy -#~ msgid "" -#~ "Rust will not automatically apply _implicit conversions_ between types " -#~ "([unlike C++](https://en.cppreference.com/w/cpp/language/" -#~ "implicit_conversion)). You can see this in a program like this:" -#~ msgstr "" -#~ "Rust n'appliquera pas automatiquement les _conversions implicites_ entre " -#~ "les types ([contrairement à C++](https://en.cppreference.com/w/cpp/" -#~ "language/implicit_conversion)). Vous pouvez le voir dans un programme " -#~ "comme celui-ci :" - -#, fuzzy -#~ msgid "" -#~ "The Rust integer types all implement the [`From`](https://doc.rust-" -#~ "lang.org/std/convert/trait.From.html) and [`Into`](https://doc.rust-" -#~ "lang.org/std/convert/trait.Into.html) traits to let us convert between " -#~ "them. The `From` trait has a single `from()` method and similarly, the " -#~ "`Into` trait has a single `into()` method. Implementing these traits " -#~ "is how a type expresses that it can be converted into another type." -#~ msgstr "" -#~ "Les types entiers Rust implémentent tous les [`From`](https://doc.rust-" -#~ "lang.org/std/convert/trait.From.html) et [`Into`](https://doc.rust-" -#~ "lang.org/std/convert/trait.Into.html) traits pour nous permettre de " -#~ "convertir entre eux. Le trait `From` a un seul `from()` et de même, le " -#~ "trait `Into` a une seule méthode `into()`. La mise en œuvre de ces " -#~ "traits est la façon dont un type exprime qu'il peut être converti en un " -#~ "autre type." - -#, fuzzy -#~ msgid "" -#~ "The standard library has an implementation of `From for i16`, which " -#~ "means that we can convert a variable `x` of type `i8` to an `i16` by " -#~ "calling `i16::from(x)`. Or, simpler, with `x.into()`, because `From " -#~ "for i16` implementation automatically create an implementation of " -#~ "`Into for i8`." -#~ msgstr "" -#~ "La bibliothèque standard a une implémentation de `From for i16`, ce " -#~ "qui signifie que nous pouvons convertir une variable `x` de type `i8` en " -#~ "un `i16` en appelant `i16::from(x)`. Ou, plus simple, avec `x.into()`, " -#~ "car `From for i16` créer automatiquement une implémentation de " -#~ "`Into for i8`." - -#, fuzzy -#~ msgid "" -#~ "The same applies for your own `From` implementations for your own types, " -#~ "so it is sufficient to only implement `From` to get a respective `Into` " -#~ "implementation automatically." -#~ msgstr "" -#~ "Il en va de même pour vos propres implémentations `From` pour vos propres " -#~ "types, il est donc suffisant pour implémenter uniquement `From` pour " -#~ "obtenir automatiquement une implémentation `Into` respective." - -#, fuzzy -#~ msgid "Execute the above program and look at the compiler error." -#~ msgstr "" -#~ "Exécutez le programme ci-dessus et examinez l'erreur du compilateur." - -#, fuzzy -#~ msgid "Update the code above to use `into()` to do the conversion." -#~ msgstr "" -#~ "Mettez à jour le code ci-dessus pour utiliser `into()` pour effectuer la " -#~ "conversion." - -#, fuzzy -#~ msgid "" -#~ "Change the types of `x` and `y` to other things (such as `f32`, `bool`, " -#~ "`i128`) to see which types you can convert to which other types. Try " -#~ "converting small types to big types and the other way around. Check the " -#~ "[standard library documentation](https://doc.rust-lang.org/std/convert/" -#~ "trait.From.html) to see if `From` is implemented for the pairs you " -#~ "check." -#~ msgstr "" -#~ "Remplacez les types de `x` et `y` par d'autres éléments (tels que `f32`, " -#~ "`bool`, `i128`) pour voir quels types vous pouvez convertir vers quels " -#~ "autres types. Essayer convertir de petits types en grands types et " -#~ "inversement. Vérifier la [documentation de la bibliothèque standard]" -#~ "(https://doc.rust-lang.org/std/convert/trait.From.html) pour voir si " -#~ "`From` est implémenté pour les paires que vous cochez." - -#, fuzzy -#~ msgid "Arrays and `for` Loops" -#~ msgstr "Tableaux et boucles `for`" - -#, fuzzy -#~ msgid "We saw that an array can be declared like this:" -#~ msgstr "Nous avons vu qu'un tableau peut être déclaré comme ceci :" - -#, fuzzy -#~ msgid "" -#~ "You can print such an array by asking for its debug representation with " -#~ "`{:?}`:" -#~ msgstr "" -#~ "Vous pouvez imprimer un tel tableau en demandant sa représentation de " -#~ "débogage avec `{:?}` :" - -#, fuzzy -#~ msgid "" -#~ "Rust lets you iterate over things like arrays and ranges using the `for` " -#~ "keyword:" -#~ msgstr "" -#~ "Rust vous permet d'itérer sur des choses comme des tableaux et des plages " -#~ "en utilisant le `for` mot-clé:" - -#, fuzzy -#~ msgid "Bonus Question" -#~ msgstr "Question bonus" - -#, fuzzy -#~ msgid "" -#~ "Could you use `&[i32]` slices instead of hard-coded 3 × 3 matrices for " -#~ "your argument and return types? Something like `&[&[i32]]` for a two-" -#~ "dimensional slice-of-slices. Why or why not?" -#~ msgstr "" -#~ "Pourriez-vous utiliser des tranches `&[i32]` au lieu de matrices 3 × 3 " -#~ "codées en dur pour votre types d'argument et de retour ? Quelque chose " -#~ "comme `&[&[i32]]` pour un fichier bidimensionnel tranche de tranches. " -#~ "Pourquoi ou pourquoi pas?" - -#, fuzzy -#~ msgid "" -#~ "See the [`ndarray` crate](https://docs.rs/ndarray/) for a production " -#~ "quality implementation." -#~ msgstr "" -#~ "Voir le [`ndarray` crate](https://docs.rs/ndarray/) pour une qualité de " -#~ "production mise en œuvre." - -#, fuzzy -#~ msgid "" -#~ "The solution and the answer to the bonus section are available in the " -#~ "[Solution](solutions-morning.md#arrays-and-for-loops) section." -#~ msgstr "" -#~ "La solution et la réponse à la section bonus sont disponibles dans le " -#~ "Section [Solution](solutions-morning.md#arrays-and-for-loops)." - -#, fuzzy -#~ msgid "" -#~ "As we have seen, `if` is an expression in Rust. It is used to " -#~ "conditionally evaluate one of two blocks, but the blocks can have a value " -#~ "which then becomes the value of the `if` expression. Other control flow " -#~ "expressions work similarly in Rust." -#~ msgstr "" -#~ "Comme nous l'avons vu, `if` est une expression en Rust. Il est utilisé " -#~ "pour conditionnellement évaluer l'un des deux blocs, mais les blocs " -#~ "peuvent avoir une valeur qui devient alors la valeur de l'expression " -#~ "\"if\". D'autres expressions de flux de contrôle fonctionnent de manière " -#~ "similaire à Rust." - -#, fuzzy -#~ msgid "" -#~ "The same rule is used for functions: the value of the function body is " -#~ "the return value:" -#~ msgstr "" -#~ "La même règle est utilisée pour les fonctions : la valeur du corps de la " -#~ "fonction est le valeur de retour :" - -#, fuzzy -#~ msgid "" -#~ "The point of this slide is to show that blocks have a type and value in " -#~ "Rust. " -#~ msgstr "" -#~ "Le but de cette diapositive est de montrer que les blocs ont un type et " -#~ "une valeur dans Rust." - -#, fuzzy -#~ msgid "" -#~ "The [`for` loop](https://doc.rust-lang.org/std/keyword.for.html) is " -#~ "closely related to the [`while let` loop](while-let-expressions.md). It " -#~ "will automatically call `into_iter()` on the expression and then iterate " -#~ "over it:" -#~ msgstr "" -#~ "L'expression `for` est étroitement liée à l'expression `while let`. Ce " -#~ "sera appelez automatiquement `into_iter()` sur l'expression, puis " -#~ "parcourez-la :" - -#, fuzzy -#~ msgid "You can use `break` and `continue` here as usual." -#~ msgstr "Vous pouvez utiliser `break` et `continue` ici comme d'habitude." - -#, fuzzy -#~ msgid "Index iteration is not a special syntax in Rust for just that case." -#~ msgstr "" -#~ "L'itération d'index n'est pas une syntaxe spéciale dans Rust pour ce cas " -#~ "précis." - -#, fuzzy -#~ msgid "`(0..10)` is a range that implements an `Iterator` trait. " -#~ msgstr "`(0..10)` est une plage qui implémente un trait `Iterator`." - -#, fuzzy -#~ msgid "" -#~ "`step_by` is a method that returns another `Iterator` that skips every " -#~ "other element. " -#~ msgstr "" -#~ "`step_by` est une méthode qui renvoie un autre `Iterator` qui saute tous " -#~ "les autres éléments." - -#, fuzzy -#~ msgid "" -#~ "Modify the elements in the vector and explain the compiler errors. Change " -#~ "vector `v` to be mutable and the for loop to `for x in v.iter_mut()`." -#~ msgstr "" -#~ "Modifier les éléments du vecteur et expliquer les erreurs du compilateur. " -#~ "Modifiez le vecteur `v` pour qu'il soit modifiable et la boucle for en " -#~ "`for x in v.iter_mut()`." - -#, fuzzy -#~ msgid "`loop` expressions" -#~ msgstr "\\# expressions de \"boucle\"" - -#, fuzzy -#~ msgid "Here you must either `break` or `return` to stop the loop:" -#~ msgstr "" -#~ "Enfin, il existe un mot-clé `loop` qui crée une boucle sans fin. Ici, " -#~ "vous devez soit `break` ou `return` pour arrêter la boucle :" - -#, fuzzy -#~ msgid "" -#~ "Due to type inference the `i32` is optional. We will gradually show the " -#~ "types less and less as the course progresses." -#~ msgstr "" -#~ "En raison de l'inférence de type, le `i32` est facultatif. Nous " -#~ "montrerons progressivement les types de moins en moins au fur et à mesure " -#~ "que le cours avance." - -#, fuzzy -#~ msgid "" -#~ "The following code tells the compiler to copy into a certain generic " -#~ "container without the code ever explicitly specifying the contained type, " -#~ "using `_` as a placeholder:" -#~ msgstr "" -#~ "Le code suivant indique au compilateur de copier dans un certain " -#~ "conteneur générique sans que le code ne spécifie jamais explicitement le " -#~ "type contenu, en utilisant `_` comme espace réservé :" - -#, fuzzy -#~ msgid "" -#~ "[`collect`](https://doc.rust-lang.org/stable/std/iter/trait.Iterator." -#~ "html#method.collect) relies on [`FromIterator`](https://doc.rust-lang.org/" -#~ "std/iter/trait.FromIterator.html), which [`HashSet`](https://doc.rust-" -#~ "lang.org/std/collections/struct.HashSet.html#impl-FromIterator%3CT%3E-for-" -#~ "HashSet%3CT,+S%3E) implements." -#~ msgstr "" -#~ "[`collect`](https://doc.rust-lang.org/stable/std/iter/trait.Iterator." -#~ "html#method.collect) repose sur `FromIterator`, qui \\[`HashSet`\\]" -#~ "(https:/ /doc.rust-lang.org/std/iter/trait.FromIterator.html) implémente." - -#, fuzzy -#~ msgid "Static and Constant Variables" -#~ msgstr "Variables statiques et constantes" - -#, fuzzy -#~ msgid "" -#~ "The following code demonstrates why the compiler can't simply reuse " -#~ "memory locations when shadowing an immutable variable in a scope, even if " -#~ "the type does not change." -#~ msgstr "" -#~ "Le code suivant montre pourquoi le compilateur ne peut pas simplement " -#~ "réutiliser les emplacements de mémoire lors de l'observation d'une " -#~ "variable immuable dans une portée, même si le type ne change pas." - -#, fuzzy -#~ msgid "" -#~ "This page offers an enum type `CoinFlip` with two variants `Heads` and " -#~ "`Tails`. You might note the namespace when using variants." -#~ msgstr "" -#~ "Cette page propose un type d'énumération `CoinFlip` avec deux variantes " -#~ "`Heads` et `Tail`. Vous pouvez noter l'espace de noms lors de " -#~ "l'utilisation de variantes." - -#, fuzzy -#~ msgid "In both, associated functions are defined within an `impl` block." -#~ msgstr "" -#~ "Dans les deux cas, les fonctions associées sont définies dans un bloc " -#~ "`impl`." - -#, fuzzy -#~ msgid "" -#~ "You can define richer enums where the variants carry data. You can then " -#~ "use the `match` statement to extract the data from each variant:" -#~ msgstr "" -#~ "Vous pouvez définir des énumérations plus riches où les variantes " -#~ "transportent des données. Vous pouvez ensuite utiliser le instruction " -#~ "`match` pour extraire les données de chaque variante :" - -#, fuzzy -#~ msgid "" -#~ "The expression is matched against the patterns from top to bottom. There " -#~ "is no fall-through like in C or C++." -#~ msgstr "" -#~ "L'expression est comparée aux modèles de haut en bas. Il n'y a pas de " -#~ "basculement comme en C ou C++." - -#, fuzzy -#~ msgid "" -#~ "The match expression has a value. The value is the last expression in the " -#~ "match arm which was executed." -#~ msgstr "" -#~ "L'expression de correspondance a une valeur. La valeur est la dernière " -#~ "expression du bras de correspondance qui a été exécutée." - -#, fuzzy -#~ msgid "" -#~ "Starting from the top we look for what pattern matches the value then run " -#~ "the code following the arrow. Once we find a match, we stop. " -#~ msgstr "" -#~ "En partant du haut, nous cherchons quel modèle correspond à la valeur, " -#~ "puis exécutons le code en suivant la flèche. Une fois que nous trouvons " -#~ "une correspondance, nous nous arrêtons." - -#, fuzzy -#~ msgid "`match` inspects a hidden discriminant field in the `enum`." -#~ msgstr "`match` inspecte un champ discriminant caché dans `enum`." - -#, fuzzy -#~ msgid "" -#~ "It is possible to retrieve the discriminant by calling `std::mem::" -#~ "discriminant()`" -#~ msgstr "" -#~ "Il est possible de récupérer le discriminant en appelant `std::mem::" -#~ "discriminant()`" - -#, fuzzy -#~ msgid "" -#~ "This is useful, for example, if implementing `PartialEq` for structs " -#~ "where comparing field values doesn't affect equality." -#~ msgstr "" -#~ "Ceci est utile, par exemple, si vous implémentez `PartialEq` pour des " -#~ "structures où la comparaison des valeurs de champ n'affecte pas l'égalité." - -#, fuzzy -#~ msgid "" -#~ "`WebEvent::Click { ... }` is not exactly the same as `WebEvent::" -#~ "Click(Click)` with a top level `struct Click { ... }`. The inlined " -#~ "version cannot implement traits, for example." -#~ msgstr "" -#~ "`WebEvent::Click { ... }` n'est pas exactement le même que `WebEvent::" -#~ "Click(Click)` avec un niveau supérieur `struct Click { ... }`. La version " -#~ "en ligne ne peut pas implémenter de traits, par exemple." - -#~ msgid "" -#~ "Rust enums are packed tightly, taking constraints due to alignment into " -#~ "account:" -#~ msgstr "" -#~ "Les énumérations de Rust sont emballées étroitement, en tenant compte des " -#~ "contraintes d'alignement :" - -#, fuzzy -#~ msgid "" -#~ "The [`match` keyword](https://doc.rust-lang.org/reference/expressions/" -#~ "match-expr.html) is used to match a value against one or more patterns. " -#~ "In that sense, it works like a series of `if let` expressions:" -#~ msgstr "" -#~ "Le mot clé `match` est utilisé pour faire correspondre une valeur à un ou " -#~ "plusieurs modèles. Dans en ce sens, cela fonctionne comme une série " -#~ "d'expressions \"if let\":" - -#, fuzzy -#~ msgid "Save the match expression to a variable and print it out." -#~ msgstr "" -#~ "Enregistrez l'expression de correspondance dans une variable et imprimez-" -#~ "la." - -#, fuzzy -#~ msgid "Remove `.as_deref()` and explain the error." -#~ msgstr "Supprimez `.as_deref()` et expliquez l'erreur." - -#, fuzzy -#~ msgid "" -#~ "`std::env::args().next()` returns an `Option`, but we cannot " -#~ "match against `String`." -#~ msgstr "" -#~ "`std::env::args().next()` renvoie une `Option`, mais nous ne " -#~ "pouvons pas comparer `String`." - -#, fuzzy -#~ msgid "" -#~ "`as_deref()` transforms an `Option` to `Option<&T::Target>`. In our " -#~ "case, this turns `Option` into `Option<&str>`." -#~ msgstr "" -#~ "`as_deref()` transforme une `Option` en `Option<&T::Target>`. Dans " -#~ "notre cas, cela transforme `Option` en `Option<&str>`." - -#, fuzzy -#~ msgid "" -#~ "We can now use pattern matching to match against the `&str` inside " -#~ "`Option`." -#~ msgstr "" -#~ "Nous pouvons maintenant utiliser le filtrage par motif pour faire " -#~ "correspondre le `&str` à l'intérieur de `Option`." - -#, fuzzy -#~ msgid "The `_` pattern is a wildcard pattern which matches any value." -#~ msgstr "" -#~ "Le modèle `_` est un modèle générique qui correspond à n'importe quelle " -#~ "valeur." - -#, fuzzy -#~ msgid "" -#~ "It can be useful to show how binding works, by for instance replacing a " -#~ "wildcard character with a variable, or removing the quotes around `q`." -#~ msgstr "" -#~ "Il peut être utile de montrer comment fonctionne la liaison, par exemple " -#~ "en remplaçant un caractère générique par une variable ou en supprimant " -#~ "les guillemets autour de `q`." - -#, fuzzy -#~ msgid "You can demonstrate matching on a reference." -#~ msgstr "Vous pouvez démontrer la correspondance sur une référence." - -#, fuzzy -#~ msgid "" -#~ "This might be a good time to bring up the concept of irrefutable " -#~ "patterns, as the term can show up in error messages." -#~ msgstr "" -#~ "C'est peut-être le bon moment pour évoquer le concept de modèles " -#~ "irréfutables, car le terme peut apparaître dans les messages d'erreur." - -#, fuzzy -#~ msgid "You can also destructure `structs`:" -#~ msgstr "Vous pouvez également déstructurer les `structs` :" - -#, fuzzy -#~ msgid "" -#~ "When matching, you can add a _guard_ to a pattern. This is an arbitrary " -#~ "Boolean expression which will be executed if the pattern matches:" -#~ msgstr "" -#~ "Lors de la correspondance, vous pouvez ajouter un _guard_ à un motif. " -#~ "Ceci est un booléen arbitraire expression qui sera exécutée si le motif " -#~ "correspond à :" - -#, fuzzy -#~ msgid "" -#~ "You can use the variables defined in the pattern in your if expression." -#~ msgstr "" -#~ "Vous pouvez utiliser les variables définies dans le modèle dans votre " -#~ "expression if." - -#, fuzzy -#~ msgid "Day 1: Afternoon Exercises" -#~ msgstr "Jour 1 : Exercices de l'après-midi" - -#, fuzzy -#~ msgid "We will look at two things:" -#~ msgstr "Nous allons regarder deux choses :" - -#, fuzzy -#~ msgid "The Luhn algorithm," -#~ msgstr "Algorithme de Luhn" - -#, fuzzy -#~ msgid "An exercise on pattern matching." -#~ msgstr "Énumérations et filtrage par motif." - -#, fuzzy -#~ msgid "" -#~ "Copy the code below to and implement the " -#~ "function." -#~ msgstr "" -#~ "Copiez le code ci-dessous sur et " -#~ "implémentez le les fonctions:" - -#~ msgid "" -#~ "Memory management: stack vs heap, manual memory management, scope-based " -#~ "memory management, and garbage collection." -#~ msgstr "" -#~ "Gestion de la mémoire : pile contre tas, gestion manuelle de la mémoire, " -#~ "gestion de la mémoire basée sur la portée et le ramassage des ordures." - -#~ msgid "" -#~ "Ownership: move semantics, copying and cloning, borrowing, and lifetimes." -#~ msgstr "" -#~ "Propriété : sémantique de déplacement, copie et clonage, emprunt et durée " -#~ "de vie." - -#, fuzzy -#~ msgid "Structs and methods." -#~ msgstr "Structures, énumérations, méthodes." - -#, fuzzy -#~ msgid "" -#~ "The Standard Library: `String`, `Option` and `Result`, `Vec`, `HashMap`, " -#~ "`Rc` and `Arc`." -#~ msgstr "" -#~ "La bibliothèque standard : `String`, `Option` et `Result`, `Vec`, " -#~ "`HashMap`, `Rc` et \"Arc\"." - -#, fuzzy -#~ msgid "Modules: visibility, paths, and filesystem hierarchy." -#~ msgstr "Modules : visibilité, chemins et hiérarchie du système de fichiers." - -#, fuzzy -#~ msgid "First, let's refresh how memory management works." -#~ msgstr "" -#~ "Tout d'abord, rafraîchissons le fonctionnement de la gestion de la " -#~ "mémoire." - -#, fuzzy -#~ msgid "The Stack vs The Heap" -#~ msgstr "La pile contre le tas" - -#, fuzzy -#~ msgid "Stack and Heap Example" -#~ msgstr "Pile et Tas" - -#, fuzzy -#~ msgid "You allocate and deallocate heap memory yourself." -#~ msgstr "Vous allouez et désallouez vous-même la mémoire de tas." - -#, fuzzy -#~ msgid "" -#~ "If not done with care, this can lead to crashes, bugs, security " -#~ "vulnerabilities, and memory leaks." -#~ msgstr "" -#~ "Si cela n'est pas fait avec soin, cela peut entraîner des plantages, des " -#~ "bogues, des failles de sécurité et des fuites de mémoire." - -#, fuzzy -#~ msgid "C Example" -#~ msgstr "C Exemple" - -#, fuzzy -#~ msgid "You must call `free` on every pointer you allocate with `malloc`:" -#~ msgstr "" -#~ "Vous devez appeler `free` sur chaque pointeur que vous allouez avec " -#~ "`malloc` :" - -#, fuzzy -#~ msgid "" -#~ "Memory is leaked if the function returns early between `malloc` and " -#~ "`free`: the pointer is lost and we cannot deallocate the memory. Worse, " -#~ "freeing the pointer twice, or accessing a freed pointer can lead to " -#~ "exploitable security vulnerabilities." -#~ msgstr "" -#~ "La mémoire est perdue si la fonction revient tôt entre `malloc` et " -#~ "`free` : le pointeur est perdu et nous ne pouvons pas désallouer la " -#~ "mémoire." - -#, fuzzy -#~ msgid "" -#~ "Constructors and destructors let you hook into the lifetime of an object." -#~ msgstr "" -#~ "Les constructeurs et les destructeurs vous permettent de vous connecter à " -#~ "la durée de vie d'un objet." - -#, fuzzy -#~ msgid "" -#~ "By wrapping a pointer in an object, you can free memory when the object " -#~ "is destroyed. The compiler guarantees that this happens, even if an " -#~ "exception is raised." -#~ msgstr "" -#~ "En enveloppant un pointeur dans un objet, vous pouvez libérer de la " -#~ "mémoire lorsque l'objet est détruit. Le compilateur garantit que cela se " -#~ "produit, même si une exception est soulevé." - -#, fuzzy -#~ msgid "" -#~ "This is often called _resource acquisition is initialization_ (RAII) and " -#~ "gives you smart pointers." -#~ msgstr "" -#~ "Ceci est souvent appelé _l'acquisition de ressources est initialisée_ " -#~ "(RAII) et donne vous pointeurs intelligents." - -#, fuzzy -#~ msgid "" -#~ "The `std::unique_ptr` object is allocated on the stack, and points to " -#~ "memory allocated on the heap." -#~ msgstr "" -#~ "L'objet `std::unique_ptr` est alloué sur la pile et pointe vers mémoire " -#~ "allouée sur le tas." - -#, fuzzy -#~ msgid "" -#~ "At the end of `say_hello`, the `std::unique_ptr` destructor will run." -#~ msgstr "" -#~ "À la fin de `say_hello`, le destructeur `std::unique_ptr` s'exécutera." - -#, fuzzy -#~ msgid "The destructor frees the `Person` object it points to." -#~ msgstr "Le destructeur libère l'objet `Person` vers lequel il pointe." - -#, fuzzy -#~ msgid "" -#~ "Special move constructors are used when passing ownership to a function:" -#~ msgstr "" -#~ "Des constructeurs de mouvement spéciaux sont utilisés lors du transfert " -#~ "de propriété à une fonction :" - -#, fuzzy -#~ msgid "" -#~ "An alternative to manual and scope-based memory management is automatic " -#~ "memory management:" -#~ msgstr "" -#~ "Une alternative à la gestion manuelle et basée sur la portée de la " -#~ "mémoire est la mémoire automatique gestion:" - -#, fuzzy -#~ msgid "The programmer never allocates or deallocates memory explicitly." -#~ msgstr "" -#~ "Le programmeur n'alloue ou ne libère jamais de mémoire explicitement." - -#, fuzzy -#~ msgid "" -#~ "A garbage collector finds unused memory and deallocates it for the " -#~ "programmer." -#~ msgstr "" -#~ "Un ramasse-miettes trouve la mémoire inutilisée et la libère pour le " -#~ "programmeur." - -#, fuzzy -#~ msgid "Java Example" -#~ msgstr "Exemple Java" - -#, fuzzy -#~ msgid "The `person` object is not deallocated after `sayHello` returns:" -#~ msgstr "" -#~ "L'objet `person` n'est pas désalloué après le retour de `sayHello` :" - -#, fuzzy -#~ msgid "Memory Management in Rust" -#~ msgstr "Gestion de la mémoire avec Rust" - -#, fuzzy -#~ msgid "Memory management in Rust is a mix:" -#~ msgstr "La gestion de la mémoire avec Rust est un mélange :" - -#, fuzzy -#~ msgid "Safe and correct like Java, but without a garbage collector." -#~ msgstr "Sûr et correct comme Java, mais sans ramasse-miettes." - -#, fuzzy -#~ msgid "Scope-based like C++, but the compiler enforces full adherence." -#~ msgstr "" -#~ "Basé sur la portée comme C++, mais le compilateur applique une adhésion " -#~ "totale." - -#, fuzzy -#~ msgid "" -#~ "A Rust user can choose the right abstraction for the situation, some even " -#~ "have no cost at runtime like C." -#~ msgstr "" -#~ "Un utilisateur de Rust peut choisir la bonne abstraction pour la " -#~ "situation, certains n'ont même aucun coût à l'exécution comme C." - -#, fuzzy -#~ msgid "Rust achieves this by modeling _ownership_ explicitly." -#~ msgstr "Il y parvient en modélisant explicitement _ownership_." - -#, fuzzy -#~ msgid "" -#~ "If asked how at this point, you can mention that in Rust this is usually " -#~ "handled by RAII wrapper types such as [Box](https://doc.rust-lang.org/std/" -#~ "boxed/struct.Box.html), [Vec](https://doc.rust-lang.org/std/vec/struct." -#~ "Vec.html), [Rc](https://doc.rust-lang.org/std/rc/struct.Rc.html), or [Arc]" -#~ "(https://doc.rust-lang.org/std/sync/struct.Arc.html). These encapsulate " -#~ "ownership and memory allocation via various means, and prevent the " -#~ "potential errors in C." -#~ msgstr "" -#~ "Si on vous demande comment à ce stade, vous pouvez mentionner qu'avec " -#~ "Rust, cela est généralement géré par des types de wrapper RAII tels que " -#~ "[Box](https://doc.rust-lang.org/std/boxed/struct.Box.html), [Vec](https://" -#~ "doc.rust-lang.org/std/vec/struct.Vec.html), [Rc](https://doc.rust-lang." -#~ "org/std/rc/struct.Rc.html) ou [Arc](https://doc.rust-lang.org/std/sync/" -#~ "struct.Arc.html). Ceux-ci encapsulent la propriété et l'allocation de " -#~ "mémoire par divers moyens et empêchent les erreurs potentielles dans C." - -#, fuzzy -#~ msgid "" -#~ "You may be asked about destructors here, the [Drop](https://doc.rust-lang." -#~ "org/std/ops/trait.Drop.html) trait is the Rust equivalent." -#~ msgstr "" -#~ "Vous pouvez être interrogé sur les destructeurs ici, le trait [Drop]" -#~ "(https://doc.rust-lang.org/std/ops/trait.Drop.html) est l'équivalent de " -#~ "Rust." - -#, fuzzy -#~ msgid "A destructor can run here to free up resources." -#~ msgstr "Un destructeur peut s'exécuter ici pour libérer des ressources." - -#, fuzzy -#~ msgid "There is always _exactly_ one variable binding which owns a value." -#~ msgstr "" -#~ "Il y a toujours _exactement_ une liaison de variable qui possède une " -#~ "valeur." - -#, fuzzy -#~ msgid "The heap data from `s1` is reused for `s2`." -#~ msgstr "Les données de tas de `s1` sont réutilisées pour `s2`." - -#, fuzzy -#~ msgid "" -#~ "When `s1` goes out of scope, nothing happens (it has been moved from)." -#~ msgstr "" -#~ "Lorsque `s1` sort de la portée, rien ne se passe (il a été déplacé de)." - -#, fuzzy -#~ msgid "" -#~ "If students ask about `derive`, it is sufficient to say that this is a " -#~ "way to generate code in Rust at compile time. In this case the default " -#~ "implementations of `Copy` and `Clone` traits are generated." -#~ msgstr "" -#~ "Si les étudiants posent des questions sur \"dériver\", il suffit de dire " -#~ "que c'est un moyen de générer du code dans Rust au moment de la " -#~ "compilation. Dans ce cas, les implémentations par défaut des traits " -#~ "`Copy` et `Clone` sont générées." - -#, fuzzy -#~ msgid "A borrowed value has a _lifetime_:" -#~ msgstr "Une valeur empruntée a une _durée de vie_ :" - -#, fuzzy -#~ msgid "" -#~ "Read `&'a Point` as \"a borrowed `Point` which is valid for at least the " -#~ "lifetime `a`\"." -#~ msgstr "" -#~ "Lire `&'a Point` comme \"un `Point` emprunté qui est valide pour au moins " -#~ "durée de vie 'a'\"." - -#, fuzzy -#~ msgid "" -#~ "In addition to borrowing its arguments, a function can return a borrowed " -#~ "value:" -#~ msgstr "" -#~ "En plus d'emprunter ses arguments, une fonction peut renvoyer une valeur " -#~ "empruntée :" - -#, fuzzy -#~ msgid "`'a` is a generic parameter, it is inferred by the compiler." -#~ msgstr "`'a` est un paramètre générique, il est déduit par le compilateur." - -#, fuzzy -#~ msgid "Lifetimes start with `'` and `'a` is a typical default name." -#~ msgstr "" -#~ "Les durées de vie commencent par `'` et `'a` est un nom par défaut " -#~ "typique." - -#, fuzzy -#~ msgid "" -#~ "The _at least_ part is important when parameters are in different scopes." -#~ msgstr "" -#~ "La partie _au moins_ est importante lorsque les paramètres sont dans des " -#~ "portées différentes." - -#, fuzzy -#~ msgid "We describe the distinction between method receivers next." -#~ msgstr "" -#~ "Nous décrivons ensuite la distinction entre les récepteurs de méthode." - -#, fuzzy -#~ msgid "" -#~ "Consider emphasizing \"shared and immutable\" and \"unique and mutable\". " -#~ "These constraints always come together in Rust due to borrow checker " -#~ "rules, and `self` is no exception. It isn't possible to reference a " -#~ "struct from multiple locations and call a mutating (`&mut self`) method " -#~ "on it." -#~ msgstr "" -#~ "Pensez à mettre l'accent sur \"partagé et immuable\" et \"unique et " -#~ "modifiable\". Ces contraintes viennent toujours ensemble dans Rust en " -#~ "raison des règles du vérificateur d'emprunt, et \"self\" ne fait pas " -#~ "exception. Il n'est pas possible de référencez une structure à partir de " -#~ "plusieurs emplacements et appelez une méthode de mutation (`&mut self`) " -#~ "sur celle-ci." - -#, fuzzy -#~ msgid "All four methods here use a different method receiver." -#~ msgstr "" -#~ "Les quatre méthodes ici utilisent un récepteur de méthode différent." - -#, fuzzy -#~ msgid "" -#~ "You can point out how that changes what the function can do with the " -#~ "variable values and if/how it can be used again in `main`." -#~ msgstr "" -#~ "Vous pouvez indiquer comment cela change ce que la fonction peut faire " -#~ "avec les valeurs des variables et si/comment elle peut être réutilisée " -#~ "dans `main`." - -#, fuzzy -#~ msgid "" -#~ "You can showcase the error that appears when trying to call `finish` " -#~ "twice." -#~ msgstr "" -#~ "Vous pouvez afficher l'erreur qui apparaît lorsque vous essayez d'appeler " -#~ "\"finish\" deux fois." - -#, fuzzy -#~ msgid "" -#~ "Note that although the method receivers are different, the non-static " -#~ "functions are called the same way in the main body. Rust enables " -#~ "automatic referencing and dereferencing when calling methods. Rust " -#~ "automatically adds in the `&`, `*`, `muts` so that that object matches " -#~ "the method signature." -#~ msgstr "" -#~ "Notez que bien que les récepteurs de méthode soient différents, les " -#~ "fonctions non statiques sont appelées de la même manière dans le corps " -#~ "principal. Rust permet le référencement et le déréférencement automatique " -#~ "lors de l'appel de méthodes. Rust ajoute automatiquement les `&`, `*`, " -#~ "`muts` afin que cet objet corresponde à la signature de la méthode." - -#, fuzzy -#~ msgid "" -#~ "You might point out that `print_laps` is using a vector that is iterated " -#~ "over. We describe vectors in more detail in the afternoon. " -#~ msgstr "" -#~ "Vous pourriez remarquer que `print_laps` utilise un vecteur qui est " -#~ "itéré. Nous décrivons les vecteurs plus en détail dans l'après-midi." - -#, fuzzy -#~ msgid "Day 2: Morning Exercises" -#~ msgstr "Jour 2 : Exercices du matin" - -#, fuzzy -#~ msgid "We will look at implementing methods in two contexts:" -#~ msgstr "" -#~ "Nous nous intéresserons à la mise en œuvre des méthodes dans deux " -#~ "contextes :" - -#, fuzzy -#~ msgid "" -#~ "We will learn much more about structs and the `Vec` type tomorrow. For " -#~ "now, you just need to know part of its API:" -#~ msgstr "" -#~ "Nous en apprendrons beaucoup plus sur les structures et le type `Vec` " -#~ "demain. Pour l'instant, vous avez juste besoin de connaître une partie de " -#~ "son API :" - -#, fuzzy -#~ msgid "" -#~ "Use this to model a library's book collection. Copy the code below to " -#~ " and update the types to make it compile:" -#~ msgstr "" -#~ "Utilisez-le pour créer une application de bibliothèque. Copiez le code ci-" -#~ "dessous pour et mettez à jour les types " -#~ "pour le faire compiler :" - -#, fuzzy -#~ msgid "The common vocabulary types include:" -#~ msgstr "Les types de vocabulaire courants comprennent :" - -#, fuzzy -#~ msgid "" -#~ "[`Option` and `Result`](std/option-result.md) types: used for optional " -#~ "values and [error handling](error-handling.md)." -#~ msgstr "" -#~ "Types [`Option` et `Result`](std/option-result.md) : utilisés pour les " -#~ "valeurs facultatives et \\[gestion des erreurs\\] (error-handling.md)." - -#, fuzzy -#~ msgid "" -#~ "[`String`](std/string.md): the default string type used for owned data." -#~ msgstr "" -#~ "[`String`](std/string.md) : le type de chaîne par défaut utilisé pour les " -#~ "données détenues." - -#, fuzzy -#~ msgid "[`Vec`](std/vec.md): a standard extensible vector." -#~ msgstr "[`Vec`](std/vec.md) : un vecteur extensible standard." - -#, fuzzy -#~ msgid "" -#~ "[`HashMap`](std/hashmap.md): a hash map type with a configurable hashing " -#~ "algorithm." -#~ msgstr "" -#~ "[`HashMap`](std/hashmap.md) : un type de carte de hachage avec un hachage " -#~ "configurable algorithme." - -#, fuzzy -#~ msgid "[`Box`](std/box.md): an owned pointer for heap-allocated data." -#~ msgstr "" -#~ "[`Box`](std/box.md) : un pointeur propriétaire pour les données allouées " -#~ "par tas." - -#, fuzzy -#~ msgid "" -#~ "[`Rc`](std/rc.md): a shared reference-counted pointer for heap-allocated " -#~ "data." -#~ msgstr "" -#~ "[`Rc`](std/rc.md) : un pointeur partagé compté par référence pour les " -#~ "données allouées par tas." - -#, fuzzy -#~ msgid "`Option` and `Result`" -#~ msgstr "`Option` et `Résultat`" - -#, fuzzy -#~ msgid "The types represent optional data:" -#~ msgstr "Les types représentent des données facultatives :" - -#, fuzzy -#~ msgid "`Option<&T>` has zero space overhead compared to `&T`." -#~ msgstr "`Option<&T>` n'a aucune surcharge d'espace par rapport à `&T`." - -#, fuzzy -#~ msgid "Box with Recursive Data Structures" -#~ msgstr "Boîte avec des structures de données récursives" - -#, fuzzy -#~ msgid "Day 2: Afternoon Exercises" -#~ msgstr "Jour 2 : Exercices de l'après-midi" - -#, fuzzy -#~ msgid "" -#~ "The exercises for this afternoon will focus on strings and iterators." -#~ msgstr "" -#~ "Les exercices de cet après-midi porteront sur les chaînes et les " -#~ "itérateurs." - -#, fuzzy -#~ msgid "" -#~ "The ownership model of Rust affects many APIs. An example of this is the " -#~ "[`Iterator`](https://doc.rust-lang.org/std/iter/trait.Iterator.html) and " -#~ "[`IntoIterator`](https://doc.rust-lang.org/std/iter/trait.IntoIterator." -#~ "html) traits." -#~ msgstr "" -#~ "Le modèle de propriété de Rust affecte de nombreuses API. Un exemple en " -#~ "est le [`Iterator`](https://doc.rust-lang.org/std/iter/trait.Iterator." -#~ "html) et [`IntoIterator`](https://doc.rust-lang.org/std/iter/trait." -#~ "IntoIterator.html) caractéristiques." - -#, fuzzy -#~ msgid "" -#~ "Traits are like interfaces: they describe behavior (methods) for a type. " -#~ "The `Iterator` trait simply says that you can call `next` until you get " -#~ "`None` back:" -#~ msgstr "" -#~ "Les traits sont comme des interfaces : ils décrivent le comportement " -#~ "(méthodes) d'un type. Le Le trait `Iterator` indique simplement que vous " -#~ "pouvez appeler `next` jusqu'à ce que vous obteniez `None` :" - -#, fuzzy -#~ msgid "You use this trait like this:" -#~ msgstr "Vous utilisez ce trait comme ceci :" - -#, fuzzy -#~ msgid "What is the type returned by the iterator? Test your answer here:" -#~ msgstr "" -#~ "Quel est le type retourné par l'itérateur ? Testez votre réponse ici :" - -#, fuzzy -#~ msgid "Why is this type used?" -#~ msgstr "Pourquoi ce type est-il utilisé ?" - -#, fuzzy -#~ msgid "Like before, what is the type returned by the iterator?" -#~ msgstr "Comme précédemment, quel est le type retourné par l'itérateur ?" - -#, fuzzy -#~ msgid "" -#~ "Now that we know both `Iterator` and `IntoIterator`, we can build `for` " -#~ "loops. They call `into_iter()` on an expression and iterates over the " -#~ "resulting iterator:" -#~ msgstr "" -#~ "Maintenant que nous connaissons à la fois `Iterator` et `IntoIterator`, " -#~ "nous pouvons construire des boucles `for`. Ils appellent `into_iter()` " -#~ "sur une expression et itèrent sur le résultat itérateur :" - -#, fuzzy -#~ msgid "" -#~ "Experiment with the code above and then consult the documentation for " -#~ "[`impl IntoIterator for &Vec`](https://doc.rust-lang.org/std/vec/" -#~ "struct.Vec.html#impl-IntoIterator-for-%26'a+Vec%3CT,+A%3E) and [`impl " -#~ "IntoIterator for Vec`](https://doc.rust-lang.org/std/vec/struct.Vec." -#~ "html#impl-IntoIterator-for-Vec%3CT,+A%3E) to check your answers." -#~ msgstr "" -#~ "Expérimentez avec le code ci-dessus, puis consultez la documentation de " -#~ "[`impl IntoIterator pour &Vec`](https://doc.rust-lang.org/std/vec/" -#~ "struct.Vec.html#impl-IntoIterator-for-%26%27a%20Vec%3CT%2C%20A%3E) et " -#~ "[`impl IntoIterator for Vec`](https://doc.rust-lang.org/std/vec/struct." -#~ "Vec.html#impl-IntoIterator-for-Vec%3CT%2C%20A%3E) pour vérifier vos " -#~ "réponses." - -#, fuzzy -#~ msgid "" -#~ "In this exercise, you are implementing a routing component of a web " -#~ "server. The server is configured with a number of _path prefixes_ which " -#~ "are matched against _request paths_. The path prefixes can contain a " -#~ "wildcard character which matches a full segment. See the unit tests below." -#~ msgstr "" -#~ "Dans cet exercice, vous implémentez un composant de routage d'un serveur " -#~ "Web. Le le serveur est configuré avec un certain nombre de _préfixes de " -#~ "chemin_ qui sont mis en correspondance _demander des chemins_. Les " -#~ "préfixes de chemin peuvent contenir un caractère générique qui correspond " -#~ "à un segment complet. Voir les tests unitaires ci-dessous." - -#, fuzzy -#~ msgid "" -#~ "Traits: deriving traits, default methods, and important standard library " -#~ "traits." -#~ msgstr "" -#~ "Traits : traits dérivés, méthodes par défaut et bibliothèque standard " -#~ "importante caractéristiques." - -#, fuzzy -#~ msgid "" -#~ "Generics: generic data types, generic methods, monomorphization, and " -#~ "trait objects." -#~ msgstr "" -#~ "Génériques : types de données génériques, méthodes génériques, " -#~ "monomorphisation et trait objets." - -#, fuzzy -#~ msgid "Testing: unit tests, documentation tests, and integration tests." -#~ msgstr "" -#~ "Tests : tests unitaires, tests de documentation et tests d'intégration." - -#, fuzzy -#~ msgid "" -#~ "Unsafe Rust: raw pointers, static variables, unsafe functions, and extern " -#~ "functions." -#~ msgstr "" -#~ "Unsafe Rust : pointeurs bruts, variables statiques, fonctions non " -#~ "sécurisées et extern les fonctions." - -#, fuzzy -#~ msgid "You can declare a generic type on your `impl` block:" -#~ msgstr "Vous pouvez déclarer un type générique sur votre bloc `impl` :" - -#, fuzzy -#~ msgid "" -#~ "Generic code is turned into non-generic code based on the call sites:" -#~ msgstr "" -#~ "Le code générique est transformé en code non générique basé sur les sites " -#~ "d'appel :" - -#, fuzzy -#~ msgid "behaves as if you wrote" -#~ msgstr "se comporte comme si vous écriviez" - -#, fuzzy -#~ msgid "You can let the compiler derive a number of traits as follows:" -#~ msgstr "" -#~ "Vous pouvez laisser le compilateur dériver un certain nombre de traits :" - -#, fuzzy -#~ msgid "Traits can implement behavior in terms of other trait methods:" -#~ msgstr "" -#~ "Les traits peuvent implémenter un comportement en termes d'autres " -#~ "méthodes de trait :" - -#, fuzzy -#~ msgid "Move method `not_equals` to a new trait `NotEquals`." -#~ msgstr "Déplacez la méthode `not_equal` vers un nouveau trait `NotEqual`." - -#, fuzzy -#~ msgid "Make `Equals` a super trait for `NotEquals`." -#~ msgstr "Faites de `NotEqual` un super trait pour `Equal`." - -#, fuzzy -#~ msgid "Provide a blanket implementation of `NotEquals` for `Equals`." -#~ msgstr "" -#~ "Avec l'implémentation globale, vous n'avez plus besoin de `NotEqual` " -#~ "comme super trait pour `Equal`." - -#, fuzzy -#~ msgid "`impl Trait` allows you to work with types which you cannot name." -#~ msgstr "" -#~ "`impl Trait` vous permet de travailler avec des types que vous ne pouvez " -#~ "pas nommer." - -#, fuzzy -#~ msgid "" -#~ "This example is great, because it uses `impl Display` twice. It helps to " -#~ "explain that nothing here enforces that it is _the same_ `impl Display` " -#~ "type. If we used a single `T: Display`, it would enforce the constraint " -#~ "that input `T` and return `T` type are the same type. It would not work " -#~ "for this particular function, as the type we expect as input is likely " -#~ "not what `format!` returns. If we wanted to do the same via `: Display` " -#~ "syntax, we'd need two independent generic parameters." -#~ msgstr "" -#~ "Cet exemple est génial, car il utilise `impl Display` deux fois. Cela " -#~ "aide à expliquer que rien ici n'impose qu'il s'agisse du _même_ type " -#~ "`impl Display`. Si nous utilisions un seul `T: Display`, cela imposerait " -#~ "la contrainte selon laquelle l'entrée `T` et le type de retour `T` sont " -#~ "du même type. Cela ne fonctionnerait pas pour cette fonction " -#~ "particulière, car le type que nous attendons en entrée n'est probablement " -#~ "pas quel `format!` renvoie. Si nous voulions faire la même chose via la " -#~ "syntaxe `: Display`, nous aurions besoin de deux paramètres génériques " -#~ "indépendants." - -#, fuzzy -#~ msgid "" -#~ "We will now look at some of the most common traits of the Rust standard " -#~ "library:" -#~ msgstr "" -#~ "Nous allons maintenant examiner certaines des caractéristiques les plus " -#~ "courantes de la bibliothèque standard Rust :" - -#, fuzzy -#~ msgid "" -#~ "[`Iterator`](https://doc.rust-lang.org/std/iter/trait.Iterator.html) and " -#~ "[`IntoIterator`](https://doc.rust-lang.org/std/iter/trait.IntoIterator." -#~ "html) used in `for` loops," -#~ msgstr "" -#~ "[`Iterator`](https://doc.rust-lang.org/std/iter/trait.Iterator.html) et " -#~ "[`IntoIterator`](https://doc.rust-lang.org/std/iter/trait.IntoIterator." -#~ "html) utilisés dans les boucles `for`," - -#, fuzzy -#~ msgid "" -#~ "[`From`](https://doc.rust-lang.org/std/convert/trait.From.html) and " -#~ "[`Into`](https://doc.rust-lang.org/std/convert/trait.Into.html) used to " -#~ "convert values," -#~ msgstr "" -#~ "[`From`](https://doc.rust-lang.org/std/convert/trait.From.html) et " -#~ "[`Into`](https://doc.rust-lang.org/std/convert/trait.Into.html) utilisés " -#~ "pour convertir les valeurs," - -#, fuzzy -#~ msgid "" -#~ "[`Add`](https://doc.rust-lang.org/std/ops/trait.Add.html), [`Mul`]" -#~ "(https://doc.rust-lang.org/std/ops/trait.Mul.html), ... used for operator " -#~ "overloading, and" -#~ msgstr "" -#~ "[`Add`](https://doc.rust-lang.org/std/ops/trait.Add.html), [`Mul`]" -#~ "(https://doc.rust-lang.org/std/ops/trait.Mul.html), ... utilisé pour la " -#~ "surcharge de l'opérateur, et" - -#, fuzzy -#~ msgid "" -#~ "`Iterator` implements `fn collect(self) -> B where B: " -#~ "FromIterator, Self: Sized`" -#~ msgstr "" -#~ "Implémente `Iterator` \\`fn collect\n" -#~ "\n" -#~ "(soi) -> B où B : FromIterator, Auto : dimensionné" - -#, fuzzy -#~ msgid "`Add`, `Mul`, ..." -#~ msgstr "`Ajouter`, `Mul`, ..." - -#, fuzzy -#~ msgid "Day 3: Morning Exercises" -#~ msgstr "Jour 3 : Exercices du matin" - -#, fuzzy -#~ msgid "" -#~ "We will design a classical GUI library using traits and trait objects." -#~ msgstr "" -#~ "Nous allons concevoir une bibliothèque de traits et d'objets de traits " -#~ "d'interface graphique classique." - -#, fuzzy -#~ msgid "Drawing A Simple GUI" -#~ msgstr "Une bibliothèque d'interface graphique" - -#, fuzzy -#~ msgid "Polygon Struct" -#~ msgstr "Structure Polygone" - -#, fuzzy -#~ msgid "" -#~ "We will create a `Polygon` struct which contain some points. Copy the " -#~ "code below to and fill in the missing " -#~ "methods to make the tests pass:" -#~ msgstr "" -#~ "Nous allons créer une structure `Polygon` contenant des points. Copiez le " -#~ "code ci-dessous à et remplissez les " -#~ "méthodes manquantes pour faire le les tests passent :" - -#, fuzzy -#~ msgid "" -#~ "Since the method signatures are missing from the problem statements, the " -#~ "key part of the exercise is to specify those correctly. You don't have to " -#~ "modify the tests." -#~ msgstr "" -#~ "Étant donné que les signatures de méthode manquent dans les énoncés de " -#~ "problème, la partie clé de l'exercice consiste à les spécifier " -#~ "correctement. Vous n'avez pas à modifier les tests." - -#, fuzzy -#~ msgid "Other interesting parts of the exercise:" -#~ msgstr "Autres parties intéressantes de l'exercice :" - -#, fuzzy -#~ msgid "" -#~ "Derive a `Copy` trait for some structs, as in tests the methods sometimes " -#~ "don't borrow their arguments." -#~ msgstr "" -#~ "Dérivez un trait `Copy` pour certaines structures, car dans les tests, " -#~ "les méthodes n'empruntent parfois pas leurs arguments." - -#, fuzzy -#~ msgid "" -#~ "Discover that `Add` trait must be implemented for two objects to be " -#~ "addable via \"+\". Note that we do not discuss generics until Day 3." -#~ msgstr "" -#~ "Découvrez que le trait `Add` doit être implémenté pour que deux objets " -#~ "puissent être ajoutés via \"+\". Notez que nous ne discutons pas des " -#~ "génériques avant le Jour 3." - -#, fuzzy -#~ msgid "Error handling in Rust is done using explicit control flow:" -#~ msgstr "" -#~ "La gestion des erreurs dans Rust est effectuée à l'aide d'un flux de " -#~ "contrôle explicite :" - -#, fuzzy -#~ msgid "Functions that can have errors list this in their return type," -#~ msgstr "" -#~ "Les fonctions qui peuvent avoir des erreurs le listent dans leur type de " -#~ "retour," - -#, fuzzy -#~ msgid "There are no exceptions." -#~ msgstr "Il n'y a aucune exception." - -#, fuzzy -#~ msgid "Catching the Stack Unwinding" -#~ msgstr "Attraper la pile qui se déroule" - -#, fuzzy -#~ msgid "" -#~ "We have already seen the `Result` enum. This is used pervasively when " -#~ "errors are expected as part of normal operation:" -#~ msgstr "" -#~ "Nous avons déjà vu l'énumération `Result`. Ceci est utilisé partout " -#~ "lorsque des erreurs sont prévu dans le cadre d'un fonctionnement normal :" - -#, fuzzy -#~ msgid "Propagating Errors with `?`" -#~ msgstr "Propagation des erreurs avec `?`" - -#, fuzzy -#~ msgid "" -#~ "The try-operator `?` is used to return errors to the caller. It lets you " -#~ "turn the common" -#~ msgstr "" -#~ "L'opérateur try `?` est utilisé pour renvoyer des erreurs à l'appelant. " -#~ "Il vous permet de tourner le commun" - -#, fuzzy -#~ msgid "" -#~ "`thiserror`'s derive macro automatically implements `std::error::Error`, " -#~ "and optionally `Display` (if the `#[error(...)]` attributes are provided) " -#~ "and `From` (if the `#[from]` attribute is added). It also works for " -#~ "structs." -#~ msgstr "" -#~ "La macro de dérivation de `thiserror` implémente automatiquement `std::" -#~ "error::Error` et éventuellement `Display` (si les attributs " -#~ "`#[error(...)]` sont fournis) et `From` (si l'attribut `#[from]` est " -#~ "ajouté). Cela fonctionne également pour les structures." - -#, fuzzy -#~ msgid "" -#~ "It doesn't affect your public API, which makes it good for libraries." -#~ msgstr "" -#~ "Cela n'affecte pas votre API publique, ce qui le rend bon pour les " -#~ "bibliothèques." - -#, fuzzy -#~ msgid "" -#~ "The widely used [anyhow](https://docs.rs/anyhow/) crate can help you add " -#~ "contextual information to your errors and allows you to have fewer custom " -#~ "error types:" -#~ msgstr "" -#~ "La caisse [anyhow](https://docs.rs/anyhow/) largement utilisée peut vous " -#~ "aider à ajouter des informations contextuelles à vos erreurs et vous " -#~ "permet d'avoir moins types d'erreur personnalisés :" - -#, fuzzy -#~ msgid "Mark unit tests with `#[test]`:" -#~ msgstr "Marquez les tests unitaires avec `#[test]` :" - -#, fuzzy -#~ msgid "Use `cargo test` to find and run the unit tests." -#~ msgstr "" -#~ "Utilisez `cargo test` pour rechercher et exécuter les tests unitaires." - -#, fuzzy -#~ msgid "" -#~ "Unit tests are often put in a nested module (run tests on the [Playground]" -#~ "(https://play.rust-lang.org/)):" -#~ msgstr "" -#~ "Les tests unitaires sont souvent placés dans un module imbriqué (exécuter " -#~ "des tests sur le [Terrain de jeu](https://play.rust-lang.org/)) :" - -#, fuzzy -#~ msgid "Useful crates for writing tests" -#~ msgstr "Caisses utiles" - -#, fuzzy -#~ msgid "Calling External Code" -#~ msgstr "Appeler le code externe" - -#, fuzzy -#~ msgid "" -#~ "Functions from other languages might violate the guarantees of Rust. " -#~ "Calling them is thus unsafe:" -#~ msgstr "" -#~ "Les fonctions d'autres langages peuvent violer les garanties de Rust. " -#~ "Appel eux est donc dangereux :" - -#, fuzzy -#~ msgid "Day 3: Afternoon Exercises" -#~ msgstr "Jour 3 : Exercices de l'après-midi" - -#, fuzzy -#~ msgid "Let us build a safe wrapper for reading directory content!" -#~ msgstr "Construisons un wrapper sûr pour lire le contenu du répertoire !" - -#, fuzzy -#~ msgid "" -#~ "After looking at the exercise, you can look at the [solution](solutions-" -#~ "afternoon.md) provided." -#~ msgstr "" -#~ "Après avoir regardé l'exercice, vous pouvez regarder la [solution]" -#~ "(solutions-afternoon.md) fournie." - -#, fuzzy -#~ msgid "concurrency:" -#~ msgstr "Concurrence" - -#, fuzzy -#~ msgid "control flow:" -#~ msgstr "Flux de contrôle" - -#, fuzzy -#~ msgid "enumeration:" -#~ msgstr "`Durée`" - -#, fuzzy -#~ msgid "error:" -#~ msgstr "\"Erreur\"" - -#, fuzzy -#~ msgid "error handling:" -#~ msgstr "Gestion des erreurs" - -#, fuzzy -#~ msgid "garbage collector:" -#~ msgstr "Ramasse-miettes" - -#, fuzzy -#~ msgid "generics:" -#~ msgstr "Génériques" - -#, fuzzy -#~ msgid "integration test:" -#~ msgstr "Tests d'intégration" - -#, fuzzy -#~ msgid "main function:" -#~ msgstr "Appel de fonctions non sécurisées" - -#, fuzzy -#~ msgid "memory leak:" -#~ msgstr "Fuites de mémoire." - -#, fuzzy -#~ msgid "method:" -#~ msgstr "Méthodes" - -#, fuzzy -#~ msgid "module:" -#~ msgstr "Modules" - -#, fuzzy -#~ msgid "ownership:" -#~ msgstr "Possession" - -#, fuzzy -#~ msgid "panic:" -#~ msgstr "Paniques" - -#, fuzzy -#~ msgid "receiver:" -#~ msgstr "Pilote" - -#, fuzzy -#~ msgid "standard library:" -#~ msgstr "Bibliothèque standard" - -#, fuzzy -#~ msgid "static:" -#~ msgstr "`statique`" - -#, fuzzy -#~ msgid "struct:" -#~ msgstr "Structures" - -#, fuzzy -#~ msgid "thread:" -#~ msgstr "Threads" - -#, fuzzy -#~ msgid "trait:" -#~ msgstr "Traits" - -#, fuzzy -#~ msgid "union:" -#~ msgstr "Unions" - -#, fuzzy -#~ msgid "unit test:" -#~ msgstr "Tests unitaires" - -#, fuzzy -#~ msgid "variable:\\" -#~ msgstr "Variables" - -#, fuzzy -#~ msgid "You will find solutions to the exercises on the following pages." -#~ msgstr "" -#~ "Vous trouverez les solutions aux exercices dans les pages suivantes." - -#, fuzzy -#~ msgid "" -#~ "Feel free to ask questions about the solutions [on GitHub](https://github." -#~ "com/google/comprehensive-rust/discussions). Let us know if you have a " -#~ "different or better solution than what is presented here." -#~ msgstr "" -#~ "N'hésitez pas à poser des questions sur les solutions [sur GitHub]" -#~ "(https://github.com/google/comprehensive-rust/discussions). Faites le " -#~ "nous savoir si vous avez une solution différente ou meilleure que celle " -#~ "présentée ici." - -#, fuzzy -#~ msgid "Day 1 Morning Exercises" -#~ msgstr "Exercices du matin du jour 1" - -#, fuzzy -#~ msgid "([back to exercise](for-loops.md))" -#~ msgstr "([retour à l'exercice](for-loops.md))" - -#, fuzzy -#~ msgid "Bonus question" -#~ msgstr "Question bonus" - -#, fuzzy -#~ msgid "" -#~ "It requires more advanced concepts. It might seem that we could use a " -#~ "slice-of-slices (`&[&[i32]]`) as the input type to transpose and thus " -#~ "make our function handle any size of matrix. However, this quickly breaks " -#~ "down: the return type cannot be `&[&[i32]]` since it needs to own the " -#~ "data you return." -#~ msgstr "" -#~ "Cela nécessite des concepts plus avancés. Il pourrait sembler que nous " -#~ "pourrions utiliser une tranche de tranches (`&[&[i32]]`) comme type " -#~ "d'entrée à transposer et ainsi faire en sorte que notre fonction gère " -#~ "n'importe quelle taille de matrice. Cependant, cela tombe rapidement en " -#~ "panne : le type de retour ne peut pas être `&[&[i32]]` car il doit " -#~ "posséder les données que vous renvoyez." - -#, fuzzy -#~ msgid "" -#~ "You can attempt to use something like `Vec>`, but this doesn't " -#~ "work out-of-the-box either: it's hard to convert from `Vec>` to " -#~ "`&[&[i32]]` so now you cannot easily use `pretty_print` either." -#~ msgstr "" -#~ "Vous pouvez essayer d'utiliser quelque chose comme `Vec>`, mais " -#~ "cela ne fonctionne pas non plus : il est difficile de convertir " -#~ "`Vec>` en `&[ &[i32]]` vous ne pouvez donc plus utiliser " -#~ "facilement `pretty_print` non plus." - -#, fuzzy -#~ msgid "" -#~ "Once we get to traits and generics, we'll be able to use the [`std::" -#~ "convert::AsRef`](https://doc.rust-lang.org/std/convert/trait.AsRef.html) " -#~ "trait to abstract over anything that can be referenced as a slice." -#~ msgstr "" -#~ "Une fois arrivés aux traits et aux génériques, nous pourrons utiliser le " -#~ "trait [`std::convert::AsRef`](https://doc.rust-lang.org/std/convert/trait." -#~ "AsRef.html) pour faire abstraction de tout ce qui peut être référencé en " -#~ "tant que tranche." - -#, fuzzy -#~ msgid "" -#~ "In addition, the type itself would not enforce that the child slices are " -#~ "of the same length, so such variable could contain an invalid matrix." -#~ msgstr "" -#~ "De plus, le type lui-même n'imposerait pas que les tranches enfants aient " -#~ "la même longueur, de sorte qu'une telle variable pourrait contenir une " -#~ "matrice non valide." - -#, fuzzy -#~ msgid "Day 1 Afternoon Exercises" -#~ msgstr "Exercices de l'après-midi du jour 1" - -#, fuzzy -#~ msgid "([back to exercise](luhn.md))" -#~ msgstr "([retour à l'exercice](luhn.md))" - -#, fuzzy -#~ msgid "Pattern matching" -#~ msgstr "filtrage par motif" - -#, fuzzy -#~ msgid "Day 2 Morning Exercises" -#~ msgstr "Exercices du matin du jour 2" - -#, fuzzy -#~ msgid "Designing a Library" -#~ msgstr "Conception d'une bibliothèque" - -#, fuzzy -#~ msgid "([back to exercise](book-library.md))" -#~ msgstr "([retour à l'exercice](book-library.md))" - -#, fuzzy -#~ msgid "([back to exercise](health-statistics.md))" -#~ msgstr "([retour à l'exercice](rtc.md))" - -#, fuzzy -#~ msgid "([back to exercise](strings-iterators.md))" -#~ msgstr "([retour à l'exercice](strings-iterators.md))" - -#, fuzzy -#~ msgid "Day 3 Morning Exercise" -#~ msgstr "Jour 3 Exercice du matin" - -#, fuzzy -#~ msgid "([back to exercise](simple-gui.md))" -#~ msgstr "([retour à l'exercice](simple-gui.md))" - -#, fuzzy -#~ msgid "([back to exercise](points-polygons.md))" -#~ msgstr "([retour à l'exercice](points-polygones.md))" - -#, fuzzy -#~ msgid "Day 3 Afternoon Exercises" -#~ msgstr "Exercices de l'après-midi du jour 3" - -#, fuzzy -#~ msgid "([back to exercise](safe-ffi-wrapper.md))" -#~ msgstr "([retour à l'exercice](safe-ffi-wrapper.md))" - -#~ msgid "Pattern Matching (TBD)" -#~ msgstr "Filtrage par motif" - -#~ msgid "" -#~ "```shell\n" -#~ "cargo init concurrency\n" -#~ "cd concurrency\n" -#~ "cargo add tokio --features full\n" -#~ "cargo run\n" -#~ "```" -#~ msgstr "" -#~ "```shell\n" -#~ "cargo init concurrency\n" -#~ "cd concurrency\n" -#~ "cargo add tokio --features full\n" -#~ "cargo run\n" -#~ "```" - -#, fuzzy -#~ msgid "" -#~ "We suggest using [VS Code](https://code.visualstudio.com/) to edit the " -#~ "code (but any LSP compatible editor works with rust-analyzer[3](https://" -#~ "rust-analyzer.github.io/))." -#~ msgstr "" -#~ "Cela permettra à \\[rust-analyzer\\]\\[1\\] de passer directement aux " -#~ "définitions. Nous suggérons d'utiliser [VS Code](https://code." -#~ "visualstudio.com/) pour modifier le code (mais tout éditeur LSP " -#~ "compatible fonctionne)." - -#~ msgid "" -#~ "Some folks also like to use the [JetBrains](https://www.jetbrains.com/" -#~ "clion/) family of IDEs, which do their own analysis but have their own " -#~ "tradeoffs. If you prefer them, you can install the [Rust Plugin](https://" -#~ "www.jetbrains.com/rust/). Please take note that as of January 2023 " -#~ "debugging only works on the CLion version of the JetBrains IDEA suite." -#~ msgstr "" -#~ "Certaines personnes aiment également utiliser la famille d'IDE " -#~ "\\[JetBrains\\] [4](https://www.jetbrains.com/clion/), qui effectuent " -#~ "leur propre analyse mais ont leurs propres compromis. Si vous les " -#~ "préférez, vous pouvez installer le [Plugin Rust](https://www.jetbrains." -#~ "com/rust/). Veuillez noter qu'à partir de janvier 2023, le débogage ne " -#~ "fonctionne que sur la version CLion de la suite JetBrains IDEA." - -#, fuzzy -#~ msgid "Extra Work in Modern C++" -#~ msgstr "Double libération de mémoire en C++ moderne" - -#, fuzzy -#~ msgid "[Solution](solutions-afternoon.md#designing-a-library)" -#~ msgstr "[Solution](solutions-afternoon.md#designing-a-library)" - -#, fuzzy -#~ msgid "`binary_search` returns `Result`." -#~ msgstr "`binary_search` renvoie `Result`." - -#, fuzzy -#~ msgid "If found, `Result::Ok` holds the index where the element is found." -#~ msgstr "Si trouvé, `Result::Ok` contient l'index où se trouve l'élément." - -#, fuzzy -#~ msgid "" -#~ "Otherwise, `Result::Err` contains the index where such an element should " -#~ "be inserted." -#~ msgstr "" -#~ "Sinon, `Result::Err` contient l'index où un tel élément doit être inséré." - -#, fuzzy -#~ msgid "" -#~ "```rust,editable,compile_fail\n" -#~ "trait NotEquals: Equals {\n" -#~ " fn not_equals(&self, other: &Self) -> bool {\n" -#~ " !self.equals(other)\n" -#~ " }\n" -#~ "}\n" -#~ "```" -#~ msgstr "Fournir une implémentation globale de `NotEqual` pour `Equal`." - -#, fuzzy -#~ msgid "" -#~ "```rust,editable,compile_fail\n" -#~ "trait NotEquals {\n" -#~ " fn not_equals(&self, other: &Self) -> bool;\n" -#~ "}\n" -#~ "\n" -#~ "impl NotEquals for T where T: Equals {\n" -#~ " fn not_equals(&self, other: &Self) -> bool {\n" -#~ " !self.equals(other)\n" -#~ " }\n" -#~ "}\n" -#~ "```" -#~ msgstr "Fournir une implémentation globale de `NotEqual` pour `Equal`." - -#, fuzzy -#~ msgid "" -#~ "`Button`: has a `label` and a callback function which is invoked when the " -#~ "button is pressed." -#~ msgstr "" -#~ "`Button` : a un `label` et une fonction de rappel qui est invoquée " -#~ "lorsque le bouton est enfoncé." - -#, fuzzy -#~ msgid "SWD" -#~ msgstr "SWD" - -#, fuzzy -#~ msgid "GDB stub and Microsoft " -#~ msgstr "Stub GDB et serveur Microsoft " - -#, fuzzy -#~ msgid "DAP" -#~ msgstr "DAP" - -#, fuzzy -#~ msgid " server" -#~ msgstr "Intégration du fret" - -#, fuzzy -#~ msgid "" -#~ "`cargo-embed` is a cargo subcommand to build and flash binaries, log " -#~ msgstr "" -#~ "`cargo-embed` est une sous-commande cargo pour construire et flasher des " -#~ "binaires, enregistrer Sortie " - -#, fuzzy -#~ msgid "RTT" -#~ msgstr "RTT" - -#, fuzzy -#~ msgid "HVC" -#~ msgstr "HVC" - -#, fuzzy -#~ msgid " to tell the firmware to power off the system:" -#~ msgstr " pour indiquer au micrologiciel d'éteindre le système :" - -#, fuzzy -#~ msgid "" -#~ "**Note:** Please ignore the `// ANCHOR: label` and `// ANCHOR_END: label` " -#~ "comments you see in the solutions. They are there to make it possible to " -#~ "re-use parts of the solutions as the exercises." -#~ msgstr "" -#~ "**Remarque :** Veuillez ignorer `// ANCHOR : libellé` et `// ANCHOR_END : " -#~ "libellé` commentaires que vous voyez dans les solutions. Ils sont là pour " -#~ "permettre de réutiliser des parties des solutions comme exercices." - -#~ msgid "Comparison" -#~ msgstr "Comparaison" - -#~ msgid "" -#~ "[![Build workflow](https://img.shields.io/github/actions/workflow/status/" -#~ "google/comprehensive-rust/build.yml?style=flat-square)](https://github." -#~ "com/google/comprehensive-rust/actions/workflows/build.yml?" -#~ "query=branch%3Amain)" -#~ msgstr "" -#~ "[![Flux de construction](https://img.shields.io/github/actions/workflow/" -#~ "status/google/comprehensive-rust/build.yml?style=flat-square)](https://" -#~ "github.com/google/comprehensive-rust/actions/workflows/build.yml?" -#~ "query=branch%3Amain)" - -#~ msgid "Build workflow" -#~ msgstr "Flux de construction" - -#~ msgid "GitHub contributors" -#~ msgstr "Contributeurs GitHub" - -#~ msgid "" -#~ "[![GitHub contributors](https://img.shields.io/github/contributors/google/" -#~ "comprehensive-rust?style=flat-square)](https://github.com/google/" -#~ "comprehensive-rust/graphs/contributors) [![GitHub stars](https://img." -#~ "shields.io/github/stars/google/comprehensive-rust?style=flat-square)]" -#~ "(https://github.com/google/comprehensive-rust/stargazers)" -#~ msgstr "" -#~ "[![Contributeurs GitHub](https://img.shields.io/github/contributors/" -#~ "google/comprehensive-rust?style=flat-square)](https://github.com/google/" -#~ "comprehensive-rust/graphs/contributors) [![GitHub étoiles](https://img." -#~ "shields.io/github/stars/google/comprehensive-rust?style=flat-square)]" -#~ "(https://github.com/google/comprehensive-rust/stargazers)" - -#~ msgid "GitHub stars" -#~ msgstr "Étoiles GitHub" - -#~ msgid "" -#~ "[![GitHub stars](https://img.shields.io/github/stars/google/comprehensive-" -#~ "rust?style=flat-square)](https://github.com/google/comprehensive-rust/" -#~ "stargazers)" -#~ msgstr "" -#~ "[![GitHub étoiles](https://img.shields.io/github/stars/google/" -#~ "comprehensive-rust?style=flat-square)](https://github.com/google/" -#~ "comprehensive-rust/stargazers)" - -#~ msgid "The course is fast paced and covers a lot of ground:" -#~ msgstr "Le cours est rapide et couvre beaucoup de terrain:" - -#, fuzzy -#~ msgid "Day 1: Basic Rust, ownership and the borrow checker." -#~ msgstr "Jour 1 : Rust de base, propriété et vérificateur d'emprunt." - -#~ msgid "Rustup (Recommended)" -#~ msgstr "Rustup (recommandé)" - -#~ msgid "" -#~ "You can follow the instructions to install cargo and rust compiler, among " -#~ "other standard ecosystem tools with the [rustup](https://rust-analyzer." -#~ "github.io/) tool, which is maintained by the Rust Foundation." -#~ msgstr "" -#~ "Vous pouvez suivre les instructions pour installer Cargo et le " -#~ "compilateur Rust, parmi d'autres outils de l'écosystème standard avec " -#~ "l'outil [rustup](https://rust-analyzer.github.io/), qui est maintenu par " -#~ "la Foundation Rust." - -#~ msgid "Package Managers" -#~ msgstr "\\### Gestionnaires de packages" - -#~ msgid "Debian" -#~ msgstr "Debian" - -#, fuzzy -#~ msgid "" -#~ "After looking at the exercises, you can look at the \\[solutions\\] " -#~ "provided." -#~ msgstr "" -#~ "Après avoir regardé les exercices, vous pouvez regarder les " -#~ "\\[solutions\\] fournies." - -#, fuzzy -#~ msgid "" -#~ "Note that since `println!` is a macro, `x` is not moved, even using the " -#~ "function like syntax of `println!(\"x: {}\", x)`" -#~ msgstr "" -#~ "Notez que puisque `println!` est une macro, `x` n'est pas déplacé, même " -#~ "en utilisant la fonction comme syntaxe de `println!(\"x: {}\", x)`" - -#, fuzzy -#~ msgid "Global state is managed with static and constant variables." -#~ msgstr "L'état global est géré avec des variables statiques et constantes." - -#, fuzzy -#~ msgid "You can declare compile-time constants:" -#~ msgstr "Vous pouvez déclarer des constantes de compilation :" - -#, fuzzy -#~ msgid "You can also declare static variables:" -#~ msgstr "Vous pouvez également déclarer des variables statiques :" - -#, fuzzy -#~ msgid "" -#~ "We will look at mutating static data in the [chapter on Unsafe Rust](../" -#~ "unsafe.md)." -#~ msgstr "" -#~ "Nous examinerons la mutation des données statiques dans le [chapitre sur " -#~ "Unsafe Rust](../unsafe.md)." - -#, fuzzy -#~ msgid "" -#~ "Depending on which abstraction (or combination of abstractions) you " -#~ "choose, can be a single unique pointer, reference counted, or atomically " -#~ "reference counted." -#~ msgstr "" -#~ "Selon l'abstraction (ou la combinaison d'abstractions) que vous " -#~ "choisissez, il peut s'agir d'un seul pointeur unique, d'une référence " -#~ "comptée ou d'une référence atomique comptée." - -#, fuzzy -#~ msgid "Here is a rough comparison of the memory management techniques." -#~ msgstr "" -#~ "Voici une comparaison approximative des techniques de gestion de la " -#~ "mémoire." - -#, fuzzy -#~ msgid "Pros of Different Memory Management Techniques" -#~ msgstr "Avantages des différentes techniques de gestion de la mémoire" - -#, fuzzy -#~ msgid "Manual like C:" -#~ msgstr "Manuel comme C :" - -#, fuzzy -#~ msgid "No runtime overhead." -#~ msgstr "Aucune surcharge d'exécution." - -#, fuzzy -#~ msgid "Automatic like Java:" -#~ msgstr "Automatique comme Java :" - -#, fuzzy -#~ msgid "Fully automatic." -#~ msgstr "Entièrement automatique." - -#, fuzzy -#~ msgid "Safe and correct." -#~ msgstr "Sûr et correct." - -#, fuzzy -#~ msgid "Scope-based like C++:" -#~ msgstr "Basé sur la portée comme C++ :" - -#, fuzzy -#~ msgid "Partially automatic." -#~ msgstr "Partiellement automatique." - -#, fuzzy -#~ msgid "Compiler-enforced scope-based like Rust:" -#~ msgstr "Basé sur la portée imposée par le compilateur comme Rust :" - -#, fuzzy -#~ msgid "Enforced by compiler." -#~ msgstr "Appliqué par le compilateur." - -#, fuzzy -#~ msgid "Cons of Different Memory Management Techniques" -#~ msgstr "Inconvénients des différentes techniques de gestion de la mémoire" - -#, fuzzy -#~ msgid "Use-after-free." -#~ msgstr "Utiliser-après-libre." - -#, fuzzy -#~ msgid "Double-frees." -#~ msgstr "Double-gratuit." - -#, fuzzy -#~ msgid "Garbage collection pauses." -#~ msgstr "La collecte des ordures s'arrête." - -#, fuzzy -#~ msgid "Destructor delays." -#~ msgstr "Retards de destructeur." - -#, fuzzy -#~ msgid "Complex, opt-in by programmer." -#~ msgstr "Complexe, opt-in par le programmeur." - -#, fuzzy -#~ msgid "Potential for use-after-free." -#~ msgstr "Potentiel d'utilisation-après-libre." - -#, fuzzy -#~ msgid "Compiler-enforced and scope-based like Rust:" -#~ msgstr "Renforcé par le compilateur et basé sur la portée comme Rust :" - -#, fuzzy -#~ msgid "Some upfront complexity." -#~ msgstr "Une certaine complexité initiale." - -#, fuzzy -#~ msgid "Can reject valid programs." -#~ msgstr "Peut rejeter les programmes valides." - -#, fuzzy -#~ msgid "The data was _moved_ from `s1` and `s1` is no longer accessible." -#~ msgstr "" -#~ "Les données ont été _déplacées_ de `s1` et `s1` n'est plus accessible." - -#, fuzzy -#~ msgid "A small book library," -#~ msgstr "Une petite bibliothèque de livres," - -#, fuzzy -#~ msgid "Iterators and ownership (hard)." -#~ msgstr "Itérateurs et propriété (difficile)." - -#, fuzzy -#~ msgid "Simple struct which tracks health statistics." -#~ msgstr "Structure simple qui suit les statistiques de santé." - -#, fuzzy -#~ msgid "Multiple structs and enums for a drawing library." -#~ msgstr "" -#~ "Plusieurs structures et énumérations pour une bibliothèque de dessins." - -#, fuzzy -#~ msgid "" -#~ "If you need to mutate the data inside an `Rc`, you will need to wrap the " -#~ "data in a type such as [`Cell` or `RefCell`](../concurrency/shared_state/" -#~ "arc.md)." -#~ msgstr "" -#~ "Si vous avez besoin de muter les données à l'intérieur d'un `Rc`, vous " -#~ "devrez envelopper les données dans un type tel que [`Cell` ou `RefCell`]" -#~ "(../concurrency/shared_state/arc.md)." - -#, fuzzy -#~ msgid "" -#~ "Compare the different datatypes mentioned. `Box` enables (im)mutable " -#~ "borrows that are enforced at compile time. `RefCell` enables (im)mutable " -#~ "borrows that are enforced at run time and will panic if it fails at " -#~ "runtime." -#~ msgstr "" -#~ "Comparez les différents types de données mentionnés. `Box` active les " -#~ "emprunts (im)mutables qui sont appliqués au moment de la compilation. " -#~ "`RefCell` active les emprunts (im)mutables qui sont appliqués au moment " -#~ "de l'exécution et paniqueront s'ils échouent au moment de l'exécution." - -#, fuzzy -#~ msgid "The module content can be omitted:" -#~ msgstr "Le contenu du module peut être omis :" - -#, fuzzy -#~ msgid "The `garden` module content is found at:" -#~ msgstr "Le contenu du module \"jardin\" se trouve à :" - -#, fuzzy -#~ msgid "`src/garden.rs` (modern Rust 2018 style)" -#~ msgstr "`src/garden.rs` (style Rust 2018 moderne)" - -#, fuzzy -#~ msgid "`src/garden/mod.rs` (older Rust 2015 style)" -#~ msgstr "`src/garden/mod.rs` (ancien style Rust 2015)" - -#, fuzzy -#~ msgid "Similarly, a `garden::vegetables` module can be found at:" -#~ msgstr "De même, un module `garden::legumes` peut être trouvé à :" - -#, fuzzy -#~ msgid "`src/garden/vegetables.rs` (modern Rust 2018 style)" -#~ msgstr "`src/garden/vegetables.rs` (style Rust 2018 moderne)" - -#, fuzzy -#~ msgid "`src/garden/vegetables/mod.rs` (older Rust 2015 style)" -#~ msgstr "`src/garden/vegetables/mod.rs` (ancien style Rust 2015)" - -#, fuzzy -#~ msgid "" -#~ "Copy the following code to and implement " -#~ "the function:" -#~ msgstr "" -#~ "Copiez le code suivant sur et implémentez " -#~ "le fonction:"