智能指针
指针 (point) 是包含内存地址变量的通用概念, 它指向 (point at) 其他的数据.
Rust中最常见的指针是引用 (reference) , 它使用& 符号并借用了他们的值, 引用数据没有其他特殊功能, 没有额外的开销
智能指针(smart pointers)是一类数据结构, 它类似指针但包含一些其他元数据与功能.
普通指针和智能指针的一个额外区别是
- 引用是一类只借用数据的指针
- 智能指针会拥有他们指向的数据
String 和 Vec<T> 都是智能指针, 他们拥有数据并且可以修改这些数据
智能指针通常使用结构体实现, 区别于常规结构体的是智能指针通常实现了 Deref 和 Drop trait
- Deref 使得智能指针表现的像普通指针一样
- Drop 使得我们可以自定义智能指针销毁时的逻辑
智能指针还涉及到 内部可变性(interior mutability)模式 和 循环引用