Skip to content
This repository was archived by the owner on May 18, 2023. It is now read-only.

Commit 307392f

Browse files
authored
Merge pull request #20 from Songbird0/WIP
MAJ
2 parents 74bbd3d + fc78ca1 commit 307392f

File tree

2 files changed

+38
-31
lines changed

2 files changed

+38
-31
lines changed

README.md

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,12 @@
11
# Stade de rédaction
22

33
La FAQ est encore régulièrement mise à jour, rédigée, mais il est possible de la lire.
4-
Actuellement(20 novembre 2016), la FAQ a subi 4 relectures.
4+
Actuellement(28 novembre 2016), la FAQ a subi 4 relectures.
5+
6+
# Remerciements
7+
8+
Je remercie tout particulièrement [@chaosedge278](https://github.com/Chaosedge278), [@f-leb](http://www.developpez.net/forums/u283256/f-leb/), [@Malick SECK](http://www.developpez.net/forums/u526667/malick-seck/) et [@imperio](https://github.com/GuillaumeGomez) pour leurs relectures orthographiques et techniques, ainsi que l'équipe de [developpez.com](developpez.com) en général pour avoir gentiment accepté d'héberger cette ressource.
9+
Merci également à [@Siguillaume](http://www.developpez.net/forums/u181612/siguillaume/) pour sa disponibilité ! :)
510

611
## Utilisation
712

rust_FAQ_Markdown/rust_FAQ.md

Lines changed: 32 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# Introduction
22

3-
cf. [README.md](README.md), s'il vous plaît.
3+
cf. [README.md](../README.md), s'il vous plaît.
44

55
# Langage
66

@@ -139,11 +139,11 @@ Voir aussi : [Page officielle du langage Rust](https://www.rust-lang.org/en-US/
139139

140140
Rust propose l'encapsulation qui est un concept objet. On peut donc dire que Rust est orienté objet. Toutefois, l'encapsulation s'effectue à l'échelle d'un **module** et non d'une **classe/structure** comme on pourrait le remarquer en Java/C#.
141141

142-
Il dispose d'un aspect de la POO, de prime abord, assez primitif; Rust permet toutefois de bénéficier du polymorphisme grâce aux « traits » qui pourraient être comparées aux interfaces Java/C#.
142+
Il dispose d'un aspect de la POO, de prime abord, assez primitif; Rust permet de bénéficier du polymorphisme grâce aux « traits » qui pourraient être comparées aux interfaces Java/C#.
143143

144144
Cependant, le langage ne supporte pas l'héritage multiple (ni l'héritage simple) entre les structures, comme il serait possible de le faire avec des classes, bien qu'il soit possible de le faire avec des traits.
145145

146-
Par conséquent, Rust est donc orienté objet, puisqu'il possède plusieurs parties de ce paradigme, mais n'est pas un langage objet *pur*.
146+
Par conséquent, Rust est orienté objet, puisqu'il possède plusieurs parties de ce paradigme, mais n'est pas un langage objet *pur*.
147147

148148
Voir aussi : [Qu'est-ce qu'un « trait » ?](#quest-ce-quun-trait)
149149

@@ -279,12 +279,12 @@ Le mot-clé `use` permet de gérer les imports d'autres modules.
279279
Exemple :
280280

281281
```rust
282-
extern crate mon_package ;
282+
extern crate mon_package;
283283

284-
use mon_package::mon_module::ma_fonction ;
284+
use mon_package::mon_module::ma_fonction;
285285

286286
fn main() {
287-
ma_fonction() ;
287+
ma_fonction();
288288
}
289289
```
290290

@@ -307,7 +307,7 @@ fn main() {
307307
}
308308
```
309309

310-
Il permet aussi de réexporter des modules vers le scope supérieur. Prenons par exemple un project possédant cette hiérarchie :
310+
Il permet aussi de réexporter des modules vers le scope supérieur. Prenons par exemple un projet possédant cette hiérarchie :
311311

312312
```text
313313
src
@@ -350,7 +350,7 @@ Le mot-clé `pub` peut être utilisé dans *trois* contextes différents :
350350
2. Au sein [et sur] des traits;
351351
3. Au sein [et sur] des structures.
352352

353-
Dans un premier temps, qu'il soit utilisé sur des `mod`ules, `trait`s, ou `struct`ures, il aura toujours la même fonction : rendre public l'objet concerné.
353+
Dans un premier temps, qu'il soit utilisé sur des `mod`ules, `trait`s, ou `struct`ures, il aura toujours la même fonction : rendre publique l'objet concerné.
354354

355355
Exemple :
356356

@@ -444,7 +444,7 @@ Bien entendu, si vous souhaitez importer un paquet qui n'est pas de vous, il vou
444444

445445
Voir aussi :
446446

447-
Pour voir un exemple de création de paquet, vous pouvez vous rendre à la Q/R : « [A quoi sert le mot-clé pub ?](#LII-A-16 "A quoi sert le mot-clé pub ?") »
447+
Pour voir un exemple de création de paquet, vous pouvez vous rendre à la Q/R : « [A quoi sert le mot-clé pub ?](#a-quoi-sert-le-mot-clé-pub) »
448448

449449
[Comment installer de nouvelles bibliothèques ?](#comment-installer-de-nouvelles-bibliothèques)
450450

@@ -593,9 +593,9 @@ Voir aussi :
593593

594594
Trois règles, et seulement trois, sont brisées dans les blocs (et fonctions) `unsafe`:
595595

596-
1. L'accès et la modification d'une variable globale (statique) mutable sont autorisés ;
597-
2. Il est possible de déréférencer un pointeur (non-nul, donc) ;
598-
3. Il est possible de faire à une fonction non-sûre.
596+
1. L'accès et la modification d'une variable globale (statique) mutable sont autorisés;
597+
2. Il est possible de déréférencer un pointeur (non-nul, donc);
598+
3. Il est possible de créer une fonction non-sûre.
599599

600600
### Quels comportements sont considérés « non-sûrs » par Rust ?
601601

@@ -613,9 +613,9 @@ fn ma_fonction() {
613613

614614
### À quoi sert le mot-clé match ?
615615

616-
Le mot-clé `match` nous permet d'implémenter le *pattern* *matching*.
616+
Le mot-clé `match` nous permet d'implémenter le *pattern matching*.
617617

618-
Ainsi, il est possible de comparer une entrée à plusieurs tokens constants et agir en conséquence. Le pattern matching est considéré comme un test *exhaustif*, car, quoi qu'il arrive, il fera en sorte de couvrir tous les cas de figure qu'on lui propose.
618+
Ainsi, il est possible de comparer une entrée à plusieurs **tokens** constants et agir en conséquence. Le pattern matching est considéré comme un test *exhaustif*, car, quoi qu'il arrive, il fera en sorte de couvrir tous les cas de figure qu'on lui propose.
619619

620620
Exemple :
621621

@@ -624,11 +624,11 @@ let foo: i32 = 117;
624624

625625
match foo {
626626
117 => println!("foo vaut 117 !"),
627-
_ => println!("You know nothing, Jon."), // s'efforcera de trouver une réponse
627+
_ => println!("You know nothing, John."), // s'efforcera de trouver une réponse
628628
}
629629
```
630630

631-
Jusqu'ici, il semblerait que le mot-clé `match` ne soit pas capable de faire preuve de plus de souplesse qu'un `switch`, ce qui est bien entendu le contraire ! Vous pouvez par-exemple matcher sur un ensemble de valeur :
631+
Jusqu'ici, il semblerait que le mot-clé `match` ne soit pas capable de faire preuve de plus de souplesse qu'un `switch`, ce qui est bien entendu le contraire ! Vous pouvez par-exemple matcher sur un ensemble de valeurs :
632632

633633
```rust
634634
let foo: i32 = 117;
@@ -639,7 +639,7 @@ match foo {
639639
}
640640
```
641641

642-
Le pattern matching est très puissant, n'hésitez pas à en user et en abuser !
642+
*Le pattern matching est très puissant, n'hésitez pas à en user et en abuser !*
643643

644644
Voir aussi :
645645

@@ -662,7 +662,7 @@ fn main() {
662662
}
663663
```
664664

665-
Il permet aussi de dire explicitement qu'une valeur de doit pas être "bougé"/move dans certains contextes.
665+
Il permet aussi de dire explicitement qu'une valeur ne doit pas être "bougée"/move dans certains contextes.
666666

667667
### À quoi sert le mot-clé mut ?
668668

@@ -689,7 +689,7 @@ Une macro est ce que l'on peut appeler vulgairement une fonction très puissante
689689

690690
Grâce aux macros, nous pouvons capturer *plusieurs* groupes *d'expressions* et ainsi écrire les instructions désirées selon *chaque* cas.
691691

692-
Pour grossir un peu le trait : les macros sont une extension du compilateur de Rust. Elles sont interprétées au moment de la compilation, pas pendant l'exécution de votre programme.
692+
Pour grossir un peu le trait : *les macros sont une extension du compilateur de Rust. Elles sont interprétées au moment de la compilation, pas pendant l'exécution de votre programme*.
693693

694694
Voir aussi : [Comment créer une macro ?](#comment-créer-une-macro)
695695

@@ -745,7 +745,7 @@ fn main() {
745745
}
746746
```
747747

748-
Vous aurez certainement remarqué que les paramètres passés sont assez spéciaux ; au lieu d'avoir le nom de leur type après les deux points (« : »), il est écrit `expr`.
748+
Vous aurez certainement remarqué que les paramètres passés sont assez spéciaux; au lieu d'avoir le nom de leur type après les deux points (« : »), il est écrit `expr`.
749749

750750
C'est ce que l'on appelle un « spécificateur » .
751751

@@ -850,14 +850,14 @@ Hello
850850

851851
Avec Rust, il est possible d'effectuer une « destructuration » sur certains types de données, mais qu'est-ce que cela signifie exactement ?
852852

853-
Grâce au pattern matching, il est possible de créer, donc, des « modèles » pour isoler une partie de la structure et ainsi vérifier si notre entrée correspond à nos attentes.
853+
Grâce au *pattern matching*, il est possible de créer, donc, des « modèles » pour isoler une partie de la structure et ainsi vérifier si notre entrée correspond à nos attentes.
854854

855855
Une destructuration peut se faire sur :
856856

857-
* Les listes
858-
* Les tuples
859-
* Les énumérations
860-
* Les structures
857+
* Les listes;
858+
* Les tuples;
859+
* Les énumérations;
860+
* Les structures.
861861

862862
Voir aussi :
863863

@@ -994,8 +994,10 @@ let foo = A {
994994

995995
La bibliothèque standard de Rust propose un(e) `trait`/ interface nommé(e) `PartialEq` composée de deux fonctions :
996996

997-
1. `fn eq(&self, other : &instance_de_la_meme_structure)` * ;*
998-
2. `fn ne(&self, other : &instance_de_la_meme_structure) ` *;*
997+
1. `fn eq(&self, other : &instance_de_la_meme_structure)`;
998+
2. `fn ne(&self, other : &instance_de_la_meme_structure) `.
999+
1000+
**Note**: Comment il est stipulé dans la documentation officielle, vous n'êtes pas forcé d'implémenter les deux fonctions : `ne()` étant simplement le contraire de `eq()` et vice versa, il serait redondant de les implémenter dans la même structure.
9991001

10001002
Ci-dessous figure un exemple complet d'implémentation :
10011003

@@ -1070,7 +1072,7 @@ pub mod votre_conteneur {
10701072
}
10711073
```
10721074

1073-
Si votre problème persiste, je vous invite à vous rendre sur les forums figurant dans la rubrique programmation pour obtenir de l'aide. Présentez clairement l'erreur que le compilateur vous renvoi dans votre post.
1075+
Si votre problème persiste, je vous invite à vous rendre sur les forums figurant dans la rubrique [programmation](http://programmation.developpez.com/) pour obtenir de l'aide. Présentez **clairement** l'erreur que le compilateur vous renvoi dans votre post.
10741076

10751077
### À quoi servent les mot-clés `if let` ?
10761078

@@ -1093,7 +1095,7 @@ C'est un moyen simple et efficace d'assigner du contenu sans passer par le patte
10931095

10941096
### À quoi servent les mot-clés `while let` ?
10951097

1096-
La combinaison des deux mot-clés permet d'effectuer des tests de manière concise et ainsi nous éviter de passer par le pattern matching lorsque ça n'est pas nécessaire. (`while let` peuvent s'avérer très utiles lorsqu'il faut tester à chaque itération si le fichier contient toujours quelque chose)
1098+
La combinaison des deux mot-clés permet d'effectuer des tests concis et ainsi nous éviter de passer par le pattern matching lorsque cela n'est pas nécessaire. (`while let` peuvent s'avérer très utiles lorsqu'il faut tester à chaque itération si le fichier contient toujours quelque chose)
10971099

10981100
**[Exemple de la documentation officielle]**
10991101

@@ -1552,7 +1554,7 @@ Vous pouvez également préciser quelle bibliothèque mettre à jour séparémen
15521554

15531555
Pour créer nos benchmark, donc, nous allons utiliser le paquet [bencher](https://crates.io/crates/bencher).
15541556

1555-
Ce module était premièrement connu sous le nom de "tester puis bencher", qui sera porté en tant que dépendance externe pour éviter les effets de bord dans les versions stables du langage.
1557+
Ce module était premièrement connu sous le nom de "test" puis sera rebaptisé "bencher", qui sera porté en tant que dépendance externe pour éviter les effets de bord dans les versions stables du langage.
15561558

15571559
```toml
15581560
[package]

0 commit comments

Comments
 (0)