| use alloc::rc::Rc; | 
 | use alloc::sync::Arc; | 
 | use alloc::task::{LocalWake, Wake}; | 
 | use core::task::{LocalWaker, Waker}; | 
 |  | 
 | #[test] | 
 | #[cfg_attr(miri, ignore)] // `will_wake` doesn't guarantee that this test will work, and indeed on Miri it can fail | 
 | fn test_waker_will_wake_clone() { | 
 |     struct NoopWaker; | 
 |  | 
 |     impl Wake for NoopWaker { | 
 |         fn wake(self: Arc<Self>) {} | 
 |     } | 
 |  | 
 |     let waker = Waker::from(Arc::new(NoopWaker)); | 
 |     let clone = waker.clone(); | 
 |  | 
 |     assert!(waker.will_wake(&clone)); | 
 |     assert!(clone.will_wake(&waker)); | 
 | } | 
 |  | 
 | #[test] | 
 | #[cfg_attr(miri, ignore)] // `will_wake` doesn't guarantee that this test will work, and indeed on Miri it can fail | 
 | fn test_local_waker_will_wake_clone() { | 
 |     struct NoopWaker; | 
 |  | 
 |     impl LocalWake for NoopWaker { | 
 |         fn wake(self: Rc<Self>) {} | 
 |     } | 
 |  | 
 |     let waker = LocalWaker::from(Rc::new(NoopWaker)); | 
 |     let clone = waker.clone(); | 
 |  | 
 |     assert!(waker.will_wake(&clone)); | 
 |     assert!(clone.will_wake(&waker)); | 
 | } |