self.tail = Some(node);
}
+ pub fn prepend(&mut self, data: T) {
+ let node = Node {
+ back: None,
+ next: None,
+ data,
+ };
+ let node = Ptr::new_heap(node);
+ self.prepend_raw(node)
+ }
+
+ fn prepend_raw(&mut self, node: P<T>) {
+ let mut tok = self.noalias.token_mut();
+ node.borrow_mut(&mut tok).back = None;
+ node.borrow_mut(&mut tok).next = self.head;
+ if let Some(old_head) = self.head {
+ old_head.borrow_mut(&mut tok).back = Some(node);
+ } else {
+ self.tail = Some(node);
+ };
+ self.head = Some(node);
+ }
+
pub fn front(&self) -> Option<&T> {
let tok = self.noalias.token_ref();
let head = self.head?;