Elision de la durée de vie du vérificateur d'emprunt Rust

RustRustBeginner
Pratiquer maintenant

This tutorial is from open-source community. Access the source code

💡 Ce tutoriel est traduit par l'IA à partir de la version anglaise. Pour voir la version originale, vous pouvez cliquer ici

Introduction

Dans ce laboratoire, nous explorons le concept d'élision en Rust, où le vérificateur d'emprunt permet d'omettre les modèles de durée de vie courants pour améliorer la lisibilité et réduire la saisie.

Note : Si le laboratoire ne spécifie pas de nom de fichier, vous pouvez utiliser n'importe quel nom de fichier que vous voulez. Par exemple, vous pouvez utiliser main.rs, le compiler et l'exécuter avec rustc main.rs &&./main.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL rust(("Rust")) -.-> rust/BasicConceptsGroup(["Basic Concepts"]) rust(("Rust")) -.-> rust/DataTypesGroup(["Data Types"]) rust(("Rust")) -.-> rust/FunctionsandClosuresGroup(["Functions and Closures"]) rust/BasicConceptsGroup -.-> rust/variable_declarations("Variable Declarations") rust/DataTypesGroup -.-> rust/integer_types("Integer Types") rust/FunctionsandClosuresGroup -.-> rust/function_syntax("Function Syntax") rust/FunctionsandClosuresGroup -.-> rust/expressions_statements("Expressions and Statements") subgraph Lab Skills rust/variable_declarations -.-> lab-99212{{"Elision de la durée de vie du vérificateur d'emprunt Rust"}} rust/integer_types -.-> lab-99212{{"Elision de la durée de vie du vérificateur d'emprunt Rust"}} rust/function_syntax -.-> lab-99212{{"Elision de la durée de vie du vérificateur d'emprunt Rust"}} rust/expressions_statements -.-> lab-99212{{"Elision de la durée de vie du vérificateur d'emprunt Rust"}} end

Elision

Certains modèles de durée de vie sont extrêmement courants, de sorte que le vérificateur d'emprunt vous permettra d'omettre ceux-ci pour économiser de la saisie et améliorer la lisibilité. Cela s'appelle l'élision. L'élision existe en Rust uniquement parce que ces modèles sont courants.

Le code suivant montre quelques exemples d'élision. Pour une description plus complète de l'élision, consultez la section sur l'élision de durée de vie dans le livre.

// `elided_input` et `annotated_input` ont essentiellement les mêmes signatures
// car la durée de vie de `elided_input` est inférée par le compilateur :
fn elided_input(x: &i32) {
    println!("`elided_input`: {}", x);
}

fn annotated_input<'a>(x: &'a i32) {
    println!("`annotated_input`: {}", x);
}

// De même, `elided_pass` et `annotated_pass` ont les mêmes signatures
// car la durée de vie est ajoutée implicitement à `elided_pass` :
fn elided_pass(x: &i32) -> &i32 { x }

fn annotated_pass<'a>(x: &'a i32) -> &'a i32 { x }

fn main() {
    let x = 3;

    elided_input(&x);
    annotated_input(&x);

    println!("`elided_pass`: {}", elided_pass(&x));
    println!("`annotated_pass`: {}", annotated_pass(&x));
}

Résumé

Félicitations ! Vous avez terminé le laboratoire sur l'élision. Vous pouvez pratiquer d'autres laboratoires dans LabEx pour améliorer vos compétences.