Коерціювання
Час життя більшої тривалості може бути приведений до меншого, щоб він працював у межах області видимості, де зазвичай не працював би. Це відбувається у формі виведеного коерціювання компілятором 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));
};
}