chiark / gitweb /
demo: break out append_raw
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Fri, 15 Nov 2024 16:06:41 +0000 (16:06 +0000)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Fri, 15 Nov 2024 16:06:41 +0000 (16:06 +0000)
src/test/demo.rs

index e5513c8f4232812e23c48612104f0ad6fb31391f..6e67858521290e6be6497c6b8174db21f402193a 100644 (file)
@@ -49,13 +49,20 @@ impl<T: Debug> List<T> {
 
     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);
         };