S-JIS[2024-10-04] 変更履歴

Rust Derefトレイト

Ruststd::ops::Derefのメモ。


概要

Derefトレイトを実装した構造体は、自動的に参照外しが行える。

つまり、「Dという、Derefトレイトを実装した構造体」が「Tという構造体」のデータを保持しているとき、D型の変数なのにTのメソッドを呼べる。


例えば、BoxはDerefトレイトを実装しているので、Box型の変数からBox内部のインスタンスのメソッドが呼べる。

struct MyStruct {}

impl MyStruct {
    fn example(&self) {
        print!("example");
    }
}

fn main() {
    let s: Box<MyStruct> = Box::new(MyStruct {});
    s.example();	// sはBox型の変数なのに、Boxの中のMyStructのメソッドが直接呼び出せる
}

stdへ戻る / Rustへ戻る / 技術メモへ戻る
メールの送信先:ひしだま