Rust: How to implement linked list?
It looks like you're trying to walk your own list to find the final element, but you don't actually have a loop. Assuming you fix that, your issue with mutability can be fixed by using ref mut
instead of ref
.
To try it myself I used a recursive implementation of add()
and this works:
fn add(&mut self, item: T) {
match *self {
Node(_, ref mut next) => next.add(item),
Nil => *self = Node(item, ~Nil)
}
}
Offhand I'm not sure how to implement this using an iterative approach, due to issues with mutable borrowing.