Elisión de Tiempo de Vida del Verificador de Préstamos de Rust

RustRustBeginner
Practicar Ahora

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

💡 Este tutorial está traducido por IA desde la versión en inglés. Para ver la versión original, puedes hacer clic aquí

Introducción

En este laboratorio, exploramos el concepto de elisión en Rust, donde el verificador de préstamos permite omitir patrones de tiempo de vida comunes para mejorar la legibilidad y reducir la escritura.

Nota: Si el laboratorio no especifica un nombre de archivo, puede usar cualquier nombre de archivo que desee. Por ejemplo, puede usar main.rs, compilar y ejecutarlo con rustc main.rs &&./main.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL rust(("Rust")) -.-> rust/DataTypesGroup(["Data Types"]) rust(("Rust")) -.-> rust/FunctionsandClosuresGroup(["Functions and Closures"]) rust(("Rust")) -.-> rust/BasicConceptsGroup(["Basic Concepts"]) 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{{"Elisión de Tiempo de Vida del Verificador de Préstamos de Rust"}} rust/integer_types -.-> lab-99212{{"Elisión de Tiempo de Vida del Verificador de Préstamos de Rust"}} rust/function_syntax -.-> lab-99212{{"Elisión de Tiempo de Vida del Verificador de Préstamos de Rust"}} rust/expressions_statements -.-> lab-99212{{"Elisión de Tiempo de Vida del Verificador de Préstamos de Rust"}} end

Elisión

Algunos patrones de tiempo de vida son abrumadoramente comunes, por lo que el verificador de préstamos te permitirá omitirlos para ahorrar tiempo de escritura y mejorar la legibilidad. Esto se conoce como elisión. La elisión existe en Rust solo porque estos patrones son comunes.

El siguiente código muestra algunos ejemplos de elisión. Para una descripción más completa de la elisión, consulte la elisión de tiempo de vida en el libro.

// `elided_input` y `annotated_input` esencialmente tienen firmas idénticas
// porque el tiempo de vida de `elided_input` es inferido por el compilador:
fn elided_input(x: &i32) {
    println!("`elided_input`: {}", x);
}

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

// Del mismo modo, `elided_pass` y `annotated_pass` tienen firmas idénticas
// porque el tiempo de vida se agrega implícitamente a `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));
}

Resumen

¡Felicitaciones! Has completado el laboratorio de Elisión. Puedes practicar más laboratorios en LabEx para mejorar tus habilidades.