在rust中每个值都有唯一的所有者确定它的生命周期,当所有者被释放,所有者总有的值也被释放。
房变量离开作用域,变量就被回收。
Box<T>是一个指向存储在堆内存里T类型数据的指针。调用Box::new(v)在堆内存里分配空间,并且把v移动到堆空间里面,并返回Box指针指向堆空间。由于Box类型拥有它指向的堆空间,当Box被释放的时候,它拥有的堆空间也被释放。
所有权机制在内存里体现为树形结构,所有者是父节点,拥有的值是子节点,树根是一个变量,当变量离开作用域,整个树都会被释放。
在rust里面每个值都是一棵树的成员。rust程序不显式释放值,c和c++用free和delete。rust里面释放值的方式就是以某种方法让它离开所有权树。比如离开作用域,从一个向量里删除元素等等。
你可以把值从一个所有者移动到另外一个所有者,这允许你构建,重排,销毁所有权树。
标准库提供了引用计数类型Rc和Arc类型,允许在某些限制下一个值有多个所有者。
你可以从值里借一个引用,引用是没有所有权的指针,在有限的生命周期里存活。
