Box <T>
是一个智能指针,指向在类型为T的堆上分配的数据。Box <T>
允许将数据存储在堆而不是堆栈上。Box <T>
是一个拥有的指针。
除了将数据存储在堆上之外,Box
没有性能开销。
当Box
离开作用域时,会调用析构函数来销毁所有内部对象并释放内存。
使用Box <T>
将数据存储在堆上。
主要是,Box <T>
用于在堆上存储数据。下面通过一个简单的例子来理解这一点:
fn main()
{
let a = Box :: new(1);
print!("value of a is : {}",a);
}
执行上面示例代码,得到以下结果 –
value of a is : 1
在上面的例子中,a
包含指向数据1
的Box
的值。如果访问Box
的值,则程序打印‘1’。 当程序结束时,Box
被解除分配。Box
存储在堆栈中,它指向的数据存储在堆上。
下面来看看上面例子的图解表示:
执行上示例代码,得到以下结果 –
执行上面示例代码,得到以输出结果如下 –
Cons(1, Cons(2, Cons(3, Nil)))