在Rust中统一分配意味着什么?

在Rust中统一分配意味着什么?,rust,Rust,在中,作者声称该代码是统一分配的。这是什么意思 struct Node { elem: i32, next: List, } pub enum List { Empty, More(Box<Node>), } struct节点{ elem:i32, 下一步:列表, } 发布枚举列表{ 空的 更多(框), } 这仅仅意味着所有节点对象都在堆上分配(通过框),而没有列表对象被装箱(或需要装箱),尽管它们可能是装箱的节点的一部分。此特定表示的效果是,每个

在中,作者声称该代码是统一分配的。这是什么意思

struct Node {
    elem: i32,
    next: List,
}

pub enum List {
    Empty,
    More(Box<Node>),
}
struct节点{
elem:i32,
下一步:列表,
}
发布枚举列表{
空的
更多(框),
}

这仅仅意味着所有
节点
对象都在堆上分配(通过
),而没有
列表
对象被装箱(或需要装箱),尽管它们可能是装箱的
节点
的一部分。此特定表示的效果是,每个节点只有一个堆分配,并且没有为指向
Empty
的链接分配堆

在列表上操作时,我们必须操作节点。特别地,可能需要将节点从一个列表移动到另一个列表。如果混合使用已装箱和未装箱的节点,则将节点的所有权从一个列表转移到另一个列表可能涉及取消装箱和重新装箱节点(即分配新框并释放旧框),或者仅在必要时将重复的或中等复杂的通用代码写入box/unbox。另一方面,如果您总是有一个
,那么处理起来就简单多了:只需移动整个
框(它只复制一个指针)