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