【笔记】Rust的智能指针

前言

Rust的智能指针

创建一个指针变量

  • 装箱:把栈上的数据存储到堆上
  • 通过Box可以进行装箱操作,从而创建一个指针变量
1
2
let 普通变量 = 值;
let c = Box::new(普通变量);

解引用

  • 通过解引用操作实现获取指针指向的数据
1
*普通变量

取地址

1
&值

手动实现一个Box

  • 如果一个结构体实现了Deref特质后,deref()方法会返回一个指向结构体内部数据的指针
  • 如果一个结构体实现了Drop特质后,如果这个指针超出了作用域范围,会触发drop()方法
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
use std::ops::Deref;

struct 结构体名<T> {
value:T
}

impl<T> 结构体名<T> {
fn new(v:T)->结构体名<T> {
结构体名{value:v}
}
}

impl<T> Deref for 结构体名<T> {
type Target = T;

fn deref(&self) -> &T {
&self.value
}
}

impl<T> Drop for 结构体名<T> {
fn drop(&mut self) {
...
}
}

创建一个指针变量

1
2
let 普通变量 = 值;
let c = 结构体名::new(普通变量);

完成

参考文献

哔哩哔哩——面向加薪学习