Skip to content

Latest commit

 

History

History
62 lines (47 loc) · 2.15 KB

File metadata and controls

62 lines (47 loc) · 2.15 KB

Lifetime Parameters - Plusieurs Lifetimes! 🔗

Learning Objectives

  • Utiliser plusieurs lifetime parameters (c'est avancé!)
  • Comprendre les relations entre lifetimes
  • Résoudre les conflits de lifetime

Core Explanation

For Absolute Beginners - C'est Comme Plusieurs Fils! 🔗

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!

Schéma Visuel - Lifetime Parameters

┌─────────────────────────────────────────┐
│  🔗 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!

Code Examples

Example 1: Plusieurs 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 }
}

Official Resources