考虑此实现:这两个链表实现有什么区别?
pub enum List {
Empty,
Elem(i32, Box<List>),
}
一个2元素节点的存储器布局是这样的:
[] = Stack
() = Heap
[Elem A, ptr] -> (Elem B, ptr) -> (Empty *junk*)
考虑另一个链表实现:
struct Node {
elem: i32,
next: List,
}
pub enum List {
Empty,
More(Box<Node>),
}
的2的存储器布局元素节点是这样的:
[ptr] -> (Elem A, ptr) -> (Elem B, ptr) -> (Empty, *junk*)
这两个内存布局非常相似,我真的不知道第二个实现比第一个更好,如claimed by Learning Rust With Entirely Too Many Linked Lists。