智能指针

指针 (point) 是包含内存地址变量的通用概念, 它指向 (point at) 其他的数据.

Rust中最常见的指针是引用 (reference) , 它使用& 符号并借用了他们的值, 引用数据没有其他特殊功能, 没有额外的开销

智能指针(smart pointers)是一类数据结构, 它类似指针但包含一些其他元数据与功能.

普通指针和智能指针的一个额外区别是

  • 引用是一类只借用数据的指针
  • 智能指针会拥有他们指向的数据

String 和 Vec<T> 都是智能指针, 他们拥有数据并且可以修改这些数据

智能指针通常使用结构体实现, 区别于常规结构体的是智能指针通常实现了 DerefDrop trait

  • Deref 使得智能指针表现的像普通指针一样
  • Drop 使得我们可以自定义智能指针销毁时的逻辑

智能指针还涉及到 内部可变性interior mutability)模式 和 循环引用

- roadup -