Skip to content
Snippets Groups Projects
Commit 6e25bbfe authored by Fabio Vandewaeter's avatar Fabio Vandewaeter
Browse files

readme

parent dccefe1d
No related branches found
No related tags found
No related merge requests found
...@@ -36,7 +36,7 @@ fn main() { ...@@ -36,7 +36,7 @@ fn main() {
## 1.2. Problem 2 ## 1.2. Problem 2
On end la variable mutable et on utilise une référence comme pour le problem 1 On rend la variable mutable et on utilise une référence comme pour le problem 1 :
```rs ```rs
struct Foo { struct Foo {
...@@ -112,9 +112,9 @@ fn main() { ...@@ -112,9 +112,9 @@ fn main() {
Problèmes réglés : Problèmes réglés :
- rendre les variables mutable pour les modifier - rendre les variables mutable pour les modifier
- donner la valuer `None` de base à `best` pour être sûr qu'elle soit initialisée - donner la valeur `None` au départ à la variable `best` pour être sûr qu'elle soit initialisée
- utiliser le type `u64` pour socker les résultats des additions avec des `u32` car le résultat peut être plus grand que le maximum de `u32` - utiliser le type `u64` pour socker les résultats des additions avec des `u32` car le résultat peut être plus grand que le maximum de `u32`
- utiliser des références pour éviter de donner le ownership - utiliser des références pour éviter de transférer le ownership
```rs ```rs
/// Returns a Vec of random values /// Returns a Vec of random values
...@@ -153,6 +153,8 @@ fn main() { ...@@ -153,6 +153,8 @@ fn main() {
## 2.1. Elided lifetimes ## 2.1. Elided lifetimes
### 2.1.1. Elided 1 ### 2.1.1. Elided 1
On met deux lifetiemes différentes car le résultat ne dépend pas des lifetimes des entrées :
```rs ```rs
fn total_len<'a, 'b>(a: &'a str, b: &'b str) -> usize { fn total_len<'a, 'b>(a: &'a str, b: &'b str) -> usize {
a.len() + b.len() a.len() + b.len()
...@@ -165,6 +167,8 @@ fn main() { ...@@ -165,6 +167,8 @@ fn main() {
### 2.1.2. Elided 2 ### 2.1.2. Elided 2
On utilise la lifetime de l'argument pour la valeur retournée car dans les deux cas on retourne quelque chose qui n'a de sens que si `input` est encore valide car ce sont des références :
```rs ```rs
fn half_end<'l>(input: &'l str) -> &'l str { fn half_end<'l>(input: &'l str) -> &'l str {
if input.len() < 2 { if input.len() < 2 {
...@@ -181,7 +185,7 @@ fn main() { ...@@ -181,7 +185,7 @@ fn main() {
### 2.1.3. Elided 3 ### 2.1.3. Elided 3
On utilise `'a` car la valeur de retour dépend toujours de `self` : On utilise `'a` pour le retour car la valeur de retour dépend toujours de `self` :
```rs ```rs
struct Foo { struct Foo {
...@@ -237,7 +241,7 @@ fn main() { ...@@ -237,7 +241,7 @@ fn main() {
### 2.2.2. Explicit 2 ### 2.2.2. Explicit 2
On utilise une lifetime commun aux deux arguments car le résultat peut dépendre des deux : On utilise une lifetime commune aux deux arguments car le résultat peut dépendre de l'un ou de l'autre argument :
```rs ```rs
fn longuest<'l>(a: &'l str, b: &'l str) -> &'l str { fn longuest<'l>(a: &'l str, b: &'l str) -> &'l str {
...@@ -280,7 +284,7 @@ fn main() { ...@@ -280,7 +284,7 @@ fn main() {
## 2.3. Lifetimes on types ## 2.3. Lifetimes on types
### 2.3.1. Types 1 ### 2.3.1. Types 1
On ajoute une lifetime au type `Message` pour son attribut `content` qui est une référence car le type `Message` a besoin que la référence de `content` soit valide encore valide pour être utilisé : On ajoute une lifetime au type `Message` pour son attribut `content` qui est une référence, car le type `Message` a besoin que la référence de `content` soit encore valide pour être utilisée :
```rs ```rs
struct Message<'a> { struct Message<'a> {
...@@ -335,7 +339,6 @@ fn main() { ...@@ -335,7 +339,6 @@ fn main() {
node1.push(&node2); node1.push(&node2);
node1.print(); node1.print();
} }
``` ```
# 3. Long exercise : a mini web server # 3. Long exercise : a mini web server
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment