rust笔记8

百科知识2025-04-275

Rust 的智能指针和 Deref Trait 是 Rust 中非常重要的概念,它们使得 Rust 的引用和指针操作更加灵活和安全。下面我们将深入介绍 Deref Trait、Deref 与 &、* 运算符的关系,以及 Rust 的隐式解引用强制转换(Deref Coercion)。

  1. 智能指针与 Deref Trait

智能指针(如 Box、Rc、Arc 等)是 Rust 中用于管理堆上数据的类型。它们实现了 Deref Trait,使得智能指针可以像普通引用一样使用。

Deref Trait 的定义:
pub trait Deref {

type Target: ?Sized;
fn deref(&self) -> &Self::Target;

}

Target:解引用后的目标类型。

deref 方法:返回一个指向目标类型的引用。

示例:自定义智能指针
use std::ops::Deref;

struct MyBox(T);

impl MyBox {

fn new(x: T) -> MyBox<T> {
    MyBox(x)
}

}

impl Deref for MyBox {

type