|
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のメソッドが直接呼び出せる }