rustp-21.Box介绍
Box指针
- Box允许将值放在堆上,留在栈上的则是指向堆数据的指针。Box唯一的损失是将数据
存放在堆上 - box适合用于如下场景:
- 当有编译未知大小的类型,但是需要在确切的上下文中使用这个类型的时候;
(举例 在一个list环境下存放数据,但是每个元素大小编译时不确定) - 当有大量数据并且希望在确保数据不被拷贝的情况下转移所有权的时候;
- 当希望拥有一个值并且只关心这个值是否实现了特定的trait而不是具体的类型;
- 当有编译未知大小的类型,但是需要在确切的上下文中使用这个类型的时候;
示例
1 | fn main() { |
Box的使用
场景:编译未知大小的类型
1 | //报错:因为不知道确定的类型大小,List大小未知 |
- 使用Box不会报错
Box创建使用Box::new
1 | enum List { |
Comment