考慮此實現:這兩個鏈表實現有什麼區別?
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。