Возврат заимствований
Но функция также может возвращать ссылку! Это означает, что заимствование передаётся обратно из функции:
// Copyright 2025 Google LLC
// SPDX-License-Identifier: Apache-2.0
fn identity(x: &i32) -> &i32 {
x
}
fn main() {
let mut x = 123;
let out = identity(&x);
// x = 5; // 🛠️❌ `x` всё ещё заимствован!
dbg!(out);
}
This slide should take about 5 minutes.
-
Функции Rust могут возвращать ссылки, то есть заимствование может передаваться обратно из функции.
-
Если функция возвращает ссылку (или другой вид заимствования), она, скорее всего, получена из одного из аргументов. Это значит, что возвращаемое значение функции продлит заимствование одного или нескольких аргументов.
-
Этот случай всё ещё довольно простой: в функцию передаётся только одно заимствование, поэтому возвращённое заимствование должно быть тем же самым.