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

as_ и _ref: преобразования ссылок

// Copyright 2025 Google LLC
// SPDX-License-Identifier: Apache-2.0

impl<T> Rc<T> {
    // Очень распространено у типов-контейнеров, посмотрите, есть и у Option.
    fn as_ref(&self) -> &T;

    fn as_ptr(&self) -> *const T;
}

impl<T> Option<T> {
    fn as_ref(&self) -> Option<&T>;

    fn as_slice(&self) -> &[T];
}
  • Метод, который возвращает заимствование основного фрагмента содержащихся данных.

  • Отношение заимствования чаще всего прямолинейно: возвращаемое значение — ссылка, которая заимствует self.

  • Возвращаемое значение может заимствовать self только логически; например, методы as_ptr() возвращают небезопасный указатель. Анализатор заимствований не отслеживает заимствования для указателей.

  • Тип, реализующий метод as, должен содержать один основной фрагмент данных, который заимствуется наружу.

    • Соглашение об именовании as не работает, если тип данных — агрегат многих полей без явного основного.

    • Если у вас есть два геттера ссылок, которые нужно различать, используйте суффикс _ref.