- Utiliser plusieurs lifetime parameters (c'est avancé!)
- Comprendre les relations entre lifetimes
- Résoudre les conflits de lifetime
Imaginez plusieurs fils 🔗 qui relient des choses:
- Lifetime parameters = Plusieurs fils avec des noms différents ('a, 'b)
- Vous pouvez dire comment ils sont liés ('b: 'a)
- C'est super puissant pour gérer des références complexes!
C'est exactement comme les lifetime parameters fonctionnent! C'est super flexible!
┌─────────────────────────────────────────┐
│ 🔗 LIFETIME PARAMETERS = FILS 🔗 │
├─────────────────────────────────────────┤
│ │
│ fn f<'a, 'b>(x: &'a str, y: &'b str) │
│ │ │
│ ├─> 'a → Fil 1 │
│ └─> 'b → Fil 2 │
│ │
│ 'b: 'a → Fil 2 dure plus que Fil 1 │
│ │
│ Relations entre lifetimes! ✅ │
│ │
└─────────────────────────────────────────┘
Mnémonique: "Fils" - Les lifetime parameters sont comme plusieurs fils: vous pouvez nommer et relier différents lifetimes!
fn longest_with_an_announcement<'a, 'b>(
x: &'a str,
y: &'b str,
ann: &str,
) -> &'a str
where
'b: 'a, // 'b doit vivre au moins aussi longtemps que 'a
{
println!("Attention! {}", ann);
if x.len() > y.len() { x } else { y }
}