as__ref: 参照変換

// 著作権 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() メソッドは unsafe なポインタを返します。借用チェッカーはポインタに対する借用を追跡しません。

  • as メソッドを実装する型は、借用して取り出される 1 つの主要なデータを含んでいるべきです。

    • データ型が、明確な主要部分を持たない多数のフィールドの集合体である場合、as という命名規則は機能しません。

    • 区別する必要がある 2 つの参照ゲッターがある場合は、_ref 接尾辞を使います。