diff --git a/tp2/README.md b/tp2/README.md index c619af9b4d9082aeb702600b4483655650e8db91..509c7286ad2954562871691ecc8595062b10af8a 100644 --- a/tp2/README.md +++ b/tp2/README.md @@ -36,7 +36,7 @@ fn main() { ## 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 struct Foo { @@ -112,9 +112,9 @@ fn main() { Problèmes réglés : - 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 des références pour éviter de donner le ownership +- utiliser des références pour éviter de transférer le ownership ```rs /// Returns a Vec of random values @@ -153,6 +153,8 @@ fn main() { ## 2.1. Elided lifetimes ### 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 fn total_len<'a, 'b>(a: &'a str, b: &'b str) -> usize { a.len() + b.len() @@ -165,6 +167,8 @@ fn main() { ### 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 fn half_end<'l>(input: &'l str) -> &'l str { if input.len() < 2 { @@ -181,7 +185,7 @@ fn main() { ### 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 struct Foo { @@ -237,7 +241,7 @@ fn main() { ### 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 fn longuest<'l>(a: &'l str, b: &'l str) -> &'l str { @@ -280,7 +284,7 @@ fn main() { ## 2.3. Lifetimes on types ### 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 struct Message<'a> { @@ -335,7 +339,6 @@ fn main() { node1.push(&node2); node1.print(); } - ``` # 3. Long exercise : a mini web server