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>;
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)
}
}