chiark / gitweb /
getting there
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Thu, 14 Nov 2024 17:18:59 +0000 (17:18 +0000)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Thu, 14 Nov 2024 21:49:40 +0000 (21:49 +0000)
src/lib.rs

index e55fa8f402cafbcbc98a37265c9ffc76a6f6cd96..2b21b20fc99fe1f25506b731b1f31f47bfef7c93 100644 (file)
@@ -25,8 +25,12 @@ unsafe impl<'a> IsRefToken<'a> for RefToken<'a> {}
 unsafe impl<'a> IsRefToken<'a> for MutToken<'a> {}
 unsafe impl<'a> IsMutToken<'a> for MutToken<'a> {}
 unsafe impl<'a, A: IsRefToken<'a>> IsRefToken<'a> for &'a A {}
-//unsafe impl<'s, 'l: 's, A: IsMutToken<'s>> IsRefToken<'s> for &'l mut A {}
-//unsafe impl<'s, 'l: 's, A: IsMutToken<'s>> IsMutToken<'s> for &'l mut A {}
+
+unsafe impl<'r, 'a, 'aa, A> IsRefToken<'r> for &'aa mut A
+where A: IsMutToken<'a>, 'a: 'r, 'aa: 'r {}
+
+unsafe impl<'r, 'a, 'aa, A> IsMutToken<'r> for &'aa mut A
+where A: IsMutToken<'a>, 'a: 'r, 'aa: 'r {}
 
 /*impl Deref for 
     type Target = NoAlias<'a>;
@@ -215,14 +219,14 @@ mod tests {
                 tail: &mut Option<Ptr<Node<T>>>,
             ) -> Option<T> {
                 let deleting = (*head)?;
-                let new_head = deleting.borrow(tok.mut_token()).next;
+                let new_head = deleting.borrow(&tok).next;
                 *head = new_head;
                 if let Some(new_head) = new_head {
-                    new_head.borrow_mut(tok.mut_token()).back = None;
+                    new_head.borrow_mut(&mut tok).back = None;
                 } else {
                     *tail = None;
                 }
-                let deleted = unsafe { deleting.free_heap(tok) };
+                let deleted = unsafe { deleting.free_heap(&mut tok) };
                 Some(deleted.data)
             }
         }