- Bienvenue à Comprehensive Rust (le guide complet de Rust) 🦀
- 1. Comment présenter le cours
❱
- 1.1. Structure du cours
- 1.2. Raccourcis clavier
- 1.3. Traductions
- 2. Utiliser Cargo
❱
- 2.1. Écosystème de Rust
- 2.2. Exemples de code
- 2.3. Exécuter Cargo localement
- Jour 1 : Matin
- 3. Bienvenue
- 4. Bonjour le monde!
❱
- 4.1. Qu'est-ce que Rust ?
- 4.2. Benefits of Rust
- 4.3. Playground
- 5. Types and Values
❱
- 5.1. Bonjour le monde!
- 5.2. Variables
- 5.3. Values
- 5.4. Arithmetic
- 5.5. Inférence de type
- 5.6. Exercise: Fibonacci
❱
- 5.6.1. Solutions
- 6. Flux de contrôle
❱
- 6.1. expressions "si"
- 6.2. Boucles for
❱
- 6.2.1. Boucles for
- 6.2.2. loop
- 6.3. pause et continue
❱
- 6.3.1. Labels
- 6.4. Blocks and Scopes
❱
- 6.4.1. Portée et masquage
- 6.5. Fonctions
- 6.6. Macros
- 6.7. Exercise: Collatz Sequence
❱
- 6.7.1. Solutions
- Jour 1 : Après-midi
- 7. Bienvenue
- 8. Tuples and Arrays
❱
- 8.1. Arrays
- 8.2. Tuples
- 8.3. Iterator
- 8.4. Déstructuration des énumérations
- 8.5. Exercise: Nested Arrays
❱
- 8.5.1. Solutions
- 9. Références
❱
- 9.1. Références
- 9.2. Références invalides
- 9.3. Slices: &\[T\]
- 9.4. Cordes
- 9.5. Exercise: Geometry
❱
- 9.5.1. Solutions
- 10. User-Defined Types
❱
- 10.1. Structures
- 10.2. Structures tuple
- 10.3. Énumérations
- 10.4. statique
- 10.5. const
- 10.6. Type Aliases
- 10.7. Exercise: Elevator Events
❱
- 10.7.1. Solutions
- Jour 2 : Matin
- 11. Bienvenue
- 12. Filtrage par motif
❱
- 12.1. Matching Values
- 12.2. Déstructuration des énumérations
- 12.3. Flux de contrôle
- 12.4. Exercise: Expression Evaluation
❱
- 12.4.1. Solutions
- 13. Read et Write
❱
- 13.1. Méthodes
- 13.2. Traits
❱
- 13.2.1. Implémentation de traits non sécurisés
- 13.2.2. Plus de traits
- 13.2.3. Types scalaires
- 13.3. Traits dérivés
- 13.4. Exercices
❱
- 13.4.1. Solutions
- 14. Génériques
❱
- 14.1. Fonctions externes
- 14.2. Types de données génériques
- 14.3. Génériques
- 14.4. Traits lié
- 14.5. Trait d'implémentation
- 14.6. Exercise: Generic min
❱
- 14.6.1. Solutions
- Jour 2 : Après-midi
- 15. Bienvenue
- 16. Bibliothèque standard
❱
- 16.1. Bibliothèque standard
- 16.2. Tests de documentation
- 16.3. Durée
- 16.4. Option, Résultat
- 16.5. String
- 16.6. Vec
- 16.7. HashMap
- 16.8. Exercices
❱
- 16.8.1. Solutions
- 17. Bibliothèque standard
❱
- 17.1. Comparaison
- 17.2. Itérateurs
- 17.3. De et Dans
- 17.4. Tester
- 17.5. Lire et Ecrire
- 17.6. Default, struct update syntax
- 17.7. Fermetures
- 17.8. Exercices
❱
- 17.8.1. Solutions
- Jour 3 : Matin
- 18. Bienvenue
- 19. Gestion de la mémoire
❱
- 19.1. Review of Program Memory
- 19.2. Gestion automatique de la mémoire
- 19.3. Possession
- 19.4. Sémantique de déplacement
- 19.5. Clone
- 19.6. Types composés
- 19.7. Drop
- 19.8. Exercise: Builder Type
❱
- 19.8.1. Solutions
- 20. Smart Pointers
❱
- 20.1. Boîte
- 20.2. Rc
- 20.3. Objets traits
- 20.4. Exercise: Binary Tree
❱
- 20.4.1. Solutions
- Jour 3 : Après-midi
- 21. Bienvenue
- 22. Emprunts
❱
- 22.1. Emprunts
- 22.2. Emprunts
- 22.3. Interopérabilité
- 22.4. Statistiques de santé
❱
- 22.4.1. Solutions
- 23. Durées de vie
❱
- 23.1. Durées de vie dans les appels de fonction
- 23.2. Durées de vie
- 23.3. Durées de vie
- 23.4. Exercise: Protobuf Parsing
❱
- 23.4.1. Solutions
- Jour 1 : Matin
- 24. Bienvenue
- 25. Itérateurs
❱
- 25.1. Itérateur
- 25.2. IntoIterator
- 25.3. FromIterator
- 25.4. Exercise: Iterator Method Chaining
❱
- 25.4.1. Solutions
- 26. Modules
❱
- 26.1. Modules
- 26.2. Hiérarchie du système de fichiers
- 26.3. Visibilité
- 26.4. use, super, self
- 26.5. Une bibliothèque d'interface graphique
❱
- 26.5.1. Solutions
- 27. Tester
❱
- 27.1. Modules de test
- 27.2. Autres projets
- 27.3. Compiler Lints and Clippy
- 27.4. Algorithme de Luhn
❱
- 27.4.1. Solutions
- Jour 1 : Après-midi
- 28. Bienvenue
- 29. Gestion des erreurs
❱
- 29.1. Paniques
- 29.2. Iterator
- 29.3. Conversions implicites
- 29.4. "Erreur"
- 29.5. De et Dans
- 29.6. Gestion structurée des erreurs avec Result
❱
- 29.6.1. Solutions
- 30. Rust non sécurisé (unsafe)
❱
- 30.1. Rust non sécurisé (unsafe)
- 30.2. Déréférencement des pointeurs nus
- 30.3. Variables statiques mutables
- 30.4. Unions
- 30.5. Appel de fonctions non sécurisées
- 30.6. Implémentation de traits non sécurisés
- 30.7. Enveloppe FFI sécurisée
❱
- 30.7.1. Solutions
- Android
- 31. Bienvenue
- 32. Installation
- 33. Règles de compilation
❱
- 33.1. Binaire
- 33.2. Bibliothèque
- 34. AIDL
❱
- 34.1. service_anniversaire/src/lib.rs :
❱
- 34.1.1. Interface
- 34.1.2. Service API
- 34.1.3. Serveur
- 34.1.4. Serveur
- 34.1.5. Déployer
- 34.1.6. Client
- 34.1.7. Modification de l'API
- 34.1.8. Mise en œuvre
- 34.2. Types
❱
- 34.2.1. Primitive Types
- 34.2.2. Types composés
- 34.2.3. Objets traits
- 34.2.4. Variables
- 34.2.5. Sending Files
- 35. Tester
❱
- 35.1. GoogleTest
- 35.2. Mocking
- 36. Journalisation
- 37. Interopérabilité
❱
- 37.1. Avec C
❱
- 37.1.1. Appeler C avec Bindgen
- 37.1.2. Appeler Rust depuis C
- 37.2. Avec C++
❱
- 37.2.1. Modules de test
- 37.2.2. Binaires Rust
- 37.2.3. Generated C++
- 37.2.4. C++ Bridge
- 37.2.5. Types scalaires
- 37.2.6. Shared Enums
- 37.2.7. Gestion des erreurs
- 37.2.8. Gestion des erreurs
- 37.2.9. Additional Types
- 37.2.10. Building for Android: C++
- 37.2.11. Building for Android: Genrules
- 37.2.12. Building for Android: Rust
- 37.3. Avec Java
- 38. Exercices
- Chromium
- 39. Bienvenue
- 40. Installation
- 41. Comparing Chromium and Cargo Ecosystems
- 42. Policy
- 43. Règles de compilation
❱
- 43.1. Rust non sécurisé (unsafe)
- 43.2. Depending on Rust Code from Chromium C++
- 43.3. Visual Studio Code
- 43.4. Exercices
- 44. Tester
❱
- 44.1. rust_gtest_interop Library
- 44.2. GN Rules for Rust Tests
- 44.3. chromium::import! Macro
- 44.4. Exercices
- 45. Interopérabilité avec C
❱
- 45.1. Exemples
- 45.2. Limitations of CXX
- 45.3. Gestion des erreurs
❱
- 45.3.1. Gestion des erreurs
- 45.3.2. Gestion des erreurs
- 45.4. Using CXX in Chromium
- 45.5. Exercices
- 46. Adding Third Party Crates
❱
- 46.1. Configuring Cargo.toml
- 46.2. Configuring gnrt_config.toml
- 46.3. Downloading Crates
- 46.4. Generating gn Build Rules
- 46.5. Resolving Problems
❱
- 46.5.1. Build Scripts Which Generate Code
- 46.5.2. Build Scripts Which Build C++ or Take Arbitrary Actions
- 46.6. Depending on a Crate
- 46.7. Reviews and Audits
- 46.8. Checking into Chromium Source Code
- 46.9. Keeping Crates Up to Date
- 46.10. Exercices
- 47. Bringing It Together - Exercise
- 48. Solutions
- Bare Metal : Matin
- 49. Bienvenue
- 50. no_std
❱
- 50.1. Un exemple minimal
- 50.2. allouer
- 51. Microcontrôleurs
❱
- 51.1. MMIO brut
- 51.2. PACs
- 51.3. HAL Crates
- 51.4. Board Support Crates
- 51.5. Le modèle d'état de type
- 51.6. embedded-hal
- 51.7. probe-rs, cargo-embed
❱
- 51.7.1. Débogage
- 51.8. Autres projets
- 52. Exercices
❱
- 52.1. Boussole
- 52.2. Solutions
- Bare Metal : Après-midi
- 53. Processeurs d'applications
❱
- 53.1. Getting Ready to Rust
- 53.2. Assembleur en ligne
- 53.3. MMIO
- 53.4. Écrivons un pilote UART
❱
- 53.4.1. Plus de traits
- 53.5. Un meilleur pilote UART
❱
- 53.5.1. Bitflags
- 53.5.2. Registres multiples
- 53.5.3. Pilote
- 53.5.4. Utilisation
- 53.6. Journalisation
❱
- 53.6.1. Utilisation
- 53.7. Exceptions
- 53.8. Autres projets
- 54. Crates utiles
❱
- 54.1. zérocopie
- 54.2. aarch64-pagination
- 54.3. buddy_system_allocator
- 54.4. tinyvec
- 54.5. tourner
- 55. Android
❱
- 55.1. vmbase
- 56. Exercices
❱
- 56.1. Pilote RTC
- 56.2. Solutions
- Concurrence : Matin
- 57. Bienvenue
- 58. Threads
❱
- 58.1. Threads délimités
- 59. Canaux
❱
- 59.1. Canaux illimités
- 59.2. Canaux limités
- 60. Envoyer et Synchroniser
❱
- 60.1. Envoyer
- 60.2. Synchroniser
- 60.3. Exemples
- 61. État partagé
❱
- 61.1. Arc
- 61.2. Mutex
- 61.3. Exemple
- 62. Exercices
❱
- 62.1. Dîner des philosophes
- 62.2. Vérificateur de liens à plusieurs threads
- 62.3. Solutions
- Concurrence : Après-midi
- 63. Async Basics
❱
- 63.1. async/await
- 63.2. Fermetures
- 63.3. Garanties d'exécution
❱
- 63.3.1. Tokio
- 63.4. Tâches
- 63.5. Canaux asynchrones
- 64. Flux de contrôle
❱
- 64.1. Join
- 64.2. Select
- 65. Pièges
❱
- 65.1. Bloquer l'exécuteur
- 65.2. Pin
- 65.3. Traits asynchrones
- 65.4. Annulation
- 66. Exercices
❱
- 66.1. Dîner des philosophes
- 66.2. Broadcast Chat Application
- 66.3. Solutions
- Derniers mots
- 67. Merci!
- 68. Glossary
- 69. Autres ressources
- 70. Crédits