Rust 的智能指针和 Deref
Trait 是 Rust 中非常重要的概念,它们使得 Rust 的引用和指针操作更加灵活和安全。下面我们将深入介绍 Deref
Trait、Deref
与 &
、*
运算符的关系,以及 Rust 的隐式解引用强制转换(Deref Coercion)。
1. 智能指针与 Deref
Trait
智能指针(如 Box<T>
、Rc<T>
、Arc<T>
等)是 Rust 中用于管理堆上数据的类型。它们实现了 Deref
Trait,使得智能指针可以像普通引用一样使用。
Deref
Trait 的定义:
rust">pub trait Deref {type Target: ?Sized;fn deref(&self) -> &Self::Target;
}
Target
:解引用后的目标类型。deref
方法:返回一个指向目标类型的引用。
示例:自定义智能指针
rust">use std::ops::Deref;struct MyBox<T>(T);impl<T> MyBox<T> {fn new(x: T) -> MyBox<T> {MyBox(x)}
}impl<T> Deref for MyBox<T> {type