diff options
Diffstat (limited to 'vendor/tokio/src/util/wake.rs')
-rw-r--r-- | vendor/tokio/src/util/wake.rs | 15 |
1 files changed, 8 insertions, 7 deletions
diff --git a/vendor/tokio/src/util/wake.rs b/vendor/tokio/src/util/wake.rs index 57739371d..5526cbc63 100644 --- a/vendor/tokio/src/util/wake.rs +++ b/vendor/tokio/src/util/wake.rs @@ -1,15 +1,16 @@ +use crate::loom::sync::Arc; + use std::marker::PhantomData; use std::mem::ManuallyDrop; use std::ops::Deref; -use std::sync::Arc; use std::task::{RawWaker, RawWakerVTable, Waker}; -/// Simplified waking interface based on Arcs -pub(crate) trait Wake: Send + Sync { - /// Wake by value - fn wake(self: Arc<Self>); +/// Simplified waking interface based on Arcs. +pub(crate) trait Wake: Send + Sync + Sized + 'static { + /// Wake by value. + fn wake(arc_self: Arc<Self>); - /// Wake by reference + /// Wake by reference. fn wake_by_ref(arc_self: &Arc<Self>); } @@ -30,7 +31,7 @@ impl Deref for WakerRef<'_> { /// Creates a reference to a `Waker` from a reference to `Arc<impl Wake>`. pub(crate) fn waker_ref<W: Wake>(wake: &Arc<W>) -> WakerRef<'_> { - let ptr = &**wake as *const _ as *const (); + let ptr = Arc::as_ptr(wake) as *const (); let waker = unsafe { Waker::from_raw(RawWaker::new(ptr, waker_vtable::<W>())) }; |