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

Коерціювання

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

// Тут Rust виводить час життя, який є якомога коротшим.
// Потім два посилання приводяться до цього часу життя.
fn multiply<'a>(first: &'a i32, second: &'a i32) -> i32 {
    first * second
}

// `<'a: 'b, 'b>` читається як час життя `'a` є принаймні таким самим довгим, як `'b`.
// Тут ми отримуємо `&'a i32` і повертаємо `&'b i32` як результат коерціювання.
fn choose_first<'a: 'b, 'b>(first: &'a i32, _: &'b i32) -> &'b i32 {
    first
}

fn main() {
    let first = 2; // Час життя більшої тривалості

    {
        let second = 3; // Час життя меншої тривалості

        println!("The product is {}", multiply(&first, &second));
        println!("{} is the first", choose_first(&first, &second));
    };
}