From 2d7df4d9456e67c89fc3994243142ff1b53f068b Mon Sep 17 00:00:00 2001 From: Boxy Date: Thu, 13 Mar 2025 16:41:46 +0000 Subject: [PATCH] Remove object lifetime cast --- src/lib.rs | 26 ++++++++++++++++++++++---- 1 file changed, 22 insertions(+), 4 deletions(-) diff --git a/src/lib.rs b/src/lib.rs index 1634f7a..88f2b47 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -190,7 +190,11 @@ impl Deref for MultiVec { offsets: &self.offsets, refs: &self.refs, })); - self.refs.add(ptr as *mut dyn Placeholder); + self.refs.add(unsafe { + std::mem::transmute::<*mut (dyn Placeholder + '_), *mut (dyn Placeholder + 'static)>( + ptr, + ) + }); unsafe { &*ptr } } } @@ -202,7 +206,11 @@ impl DerefMut for MultiVec { offsets: &self.offsets, refs: &self.refs, })); - self.refs.add(ptr as *mut dyn Placeholder); + self.refs.add(unsafe { + std::mem::transmute::<*mut (dyn Placeholder + '_), *mut (dyn Placeholder + 'static)>( + ptr, + ) + }); unsafe { &mut *ptr } } } @@ -235,7 +243,12 @@ macro_rules! impl_index { refs: self.refs, })); let refs = unsafe { &*self.refs }; - refs.add(ptr as *mut dyn Placeholder); + refs.add(unsafe { + ::std::mem::transmute::< + *mut (dyn Placeholder + '_), + *mut (dyn Placeholder + 'static), + >(ptr) + }); unsafe { &*ptr } } } @@ -257,7 +270,12 @@ macro_rules! impl_index { refs: *refs, })); let refs = unsafe { &*self.refs }; - refs.add(ptr as *mut dyn Placeholder); + refs.add(unsafe { + ::std::mem::transmute::< + *mut (dyn Placeholder + '_), + *mut (dyn Placeholder + 'static), + >(ptr) + }); unsafe { &mut *ptr } } }