diff --git a/library/alloc/src/task.rs b/library/alloc/src/task.rs index 5edc579605669..4d32d3f120e8b 100644 --- a/library/alloc/src/task.rs +++ b/library/alloc/src/task.rs @@ -87,3 +87,13 @@ fn raw_waker<W: Wake + Send + Sync + 'static>(waker: Arc<W>) -> RawWaker { &RawWakerVTable::new(clone_waker::<W>, wake::<W>, wake_by_ref::<W>, drop_waker::<W>), ) } + +impl<F: Fn() + Send + Sync + 'static> Wake for F { + fn wake(self: Arc<Self>) { + (self)(); + } + + fn wake_by_ref(self: &Arc<Self>) { + (self)(); + } +}