pub fn append(&mut self, data: T) {
let node = Node {
- back: self.head,
+ back: None,
next: None,
data,
};
let node = Ptr::new_heap(node);
+ self.append_raw(node)
+ }
+
+ fn append_raw(&mut self, node: P<T>) {
+ let mut tok = self.noalias.token_mut();
+ node.borrow_mut(&mut tok).back = self.head;
+ node.borrow_mut(&mut tok).next = None;
if let Some(old_tail) = self.tail {
- old_tail.borrow_mut(&mut self.noalias).next = Some(node);
+ old_tail.borrow_mut(&mut tok).next = Some(node);
} else {
self.head = Some(node);
};