Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Скорочення часу життя (lifetime elision)

Деякі шаблони часу життя є надзвичайно поширеними, тож перевірник запозичень дозволить вам опускати їх, щоб не витрачати час на введення та покращити читабельність. Це відомо як скорочення часу життя. Скорочення часу життя існує в Rust лише тому, що ці шаблони поширені.

Наведений нижче код показує кілька прикладів скорочення часу життя. Для більш вичерпного опису скорочення часу життя див. скорочення часу життя у книзі.

// `elided_input` and `annotated_input` essentially have identical signatures
// because the lifetime of `elided_input` is inferred by the compiler:
fn elided_input(x: &i32) {
    println!("`elided_input`: {}", x);
}

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

// Similarly, `elided_pass` and `annotated_pass` have identical signatures
// because the lifetime is added implicitly to `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));
}

Див. також:

скорочення часу життя