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

Возврат заимствований

Но функция также может возвращать ссылку! Это означает, что заимствование передаётся обратно из функции:

// 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 могут возвращать ссылки, то есть заимствование может передаваться обратно из функции.

  • Если функция возвращает ссылку (или другой вид заимствования), она, скорее всего, получена из одного из аргументов. Это значит, что возвращаемое значение функции продлит заимствование одного или нескольких аргументов.

  • Этот случай всё ещё довольно простой: в функцию передаётся только одно заимствование, поэтому возвращённое заимствование должно быть тем же самым.