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.
-