From 7919ebb0ae932edf441691b65f6add9850bceb88 Mon Sep 17 00:00:00 2001 From: Lukas Markeffsky <@> Date: Thu, 1 Feb 2024 00:49:36 +0100 Subject: [PATCH] less unsafe in test --- src/lib.rs | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/src/lib.rs b/src/lib.rs index f76cb79..16b985a 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -243,10 +243,9 @@ mod tests { use std::cell::RefCell; use std::fmt::Display; + use std::panic::{self, AssertUnwindSafe}; use std::pin::pin; - use std::ptr; use std::rc::Rc; - use std::panic::{self, AssertUnwindSafe}; fn iter_pinned_mut<T>(slice: Pin<&mut [T]>) -> impl Iterator<Item = Pin<&mut T>> { unsafe { @@ -366,18 +365,16 @@ mod tests { #[test] #[should_panic = "projected from different roots"] fn project_multiple() { - let target = ProjectTarget::new(0); - // pretend we leak the target here without actually leaking - let target_leak = unsafe { &*ptr::from_ref(&target) }; + let target = Rc::new(ProjectTarget::new(0)); let root1 = pin!(Root::new()); - let xrc1 = root1.unclaimed().claim(NoReclaim(())); + let xrc1 = root1.unclaimed().claim(NoReclaim(target.clone())); let root2 = pin!(Root::new()); - let xrc2 = root2.unclaimed().claim(NoReclaim(())); + let xrc2 = root2.unclaimed().claim(NoReclaim(target)); - let _ = Xrc::project(xrc1, |_| target_leak); - let _ = Xrc::project(xrc2, |_| target_leak); + let _ = Xrc::project(xrc1, |xrc| &*xrc.0); + let _ = Xrc::project(xrc2, |xrc| &*xrc.0); } #[test] -- GitLab