Rust : Maîtriser la Ownership et les Lifetimes

Guide complet pour comprendre et maîtriser les concepts de ownership, borrowing et lifetimes en Rust.

Olivier Dupuy
19 juin 2025

3433

Vues

0

Commentaires

18

Min de lecture
Rust : Maîtriser la Ownership et les Lifetimes

Rust Ownership : Le cœur du langage

L'ownership est le concept fondamental qui rend Rust unique. Comprendre ce système est essentiel pour écrire du code Rust efficace et sûr.

1. Les règles de l'Ownership


fn main() {
    // Règle 1: Chaque valeur a un propriétaire unique
    let s1 = String::from("Hello");
    
    // Règle 2: Transfert de propriété (move)
    let s2 = s1; // s1 n'est plus valide
    // println!("{}", s1); // Erreur de compilation!
    println!("{}", s2); // OK
    
    // Règle 3: La valeur est libérée quand le propriétaire sort du scope
    {
        let temp = String::from("temporary");
        // temp est détruit à la fin du bloc
    }
    
    // Clonage explicite pour copier
    let s3 = s2.clone();
    println!("{} and {}", s2, s3); // OK, on a deux copies
    
    // Types Copy (entiers, bools, chars)
    let x = 5;
    let y = x; // Copy, pas move
    println!("{} and {}", x, y); // OK pour les types Copy
}

2. Borrowing et Références


fn main() {
    let mut s = String::from("Hello");
    
    // Emprunt immutable
    let len = calculate_length(&s);
    println!("Length of '{}' is {}", s, len);
    
    // Emprunt mutable
    change(&mut s);
    println!("Changed: {}", s);
    
    // Règles de borrowing
    let r1 = &s; // OK
    let r2 = &s; // OK - plusieurs références immutables
    println!("{} and {}", r1, r2);
    
    // Après utilisation des références immutables
    let r3 = &mut s; // OK maintenant
    r3.push_str(" World");
    println!("{}", r3);
}

fn calculate_length(s: &String) -> usize {
    s.len() // s est une référence, pas le propriétaire
}

fn change(s: &mut String) {
    s.push_str(", Rust!");
}

Conclusion

La maîtrise de l'ownership en Rust ouvre la voie à une programmation système sûre et performante.

Partager cet article
42
12

Commentaires (0)

Rejoignez la discussion

Connectez-vous pour partager votre avis et échanger avec la communauté

Première discussion

Soyez le premier à partager votre avis sur cet article !

À propos de l'auteur
Olivier Dupuy

Développeur passionné et créateur de contenu technique. Expert en développement web moderne avec ASP.NET Core, JavaScript, et technologies cloud.

Profil
Articles similaires
Go 1.21 : Generics Matures et Nouvelles Optimisations
Go 1.21 : Generics Matures et Nouvelles Optimisations
16 juin 2025 2165
Architecture & Design Patterns
Navigation rapide
Commentaires (0)