From: Ian Jackson Date: Thu, 14 Nov 2024 17:18:59 +0000 (+0000) Subject: getting there X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ian/git?a=commitdiff_plain;h=8b85334060dc7f06a551801d2ba4c75efe12e28b;p=manually-boxed getting there --- diff --git a/src/lib.rs b/src/lib.rs index e55fa8f..2b21b20 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -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>>, ) -> Option { 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) } }