genawaiter/waker.rs
1use std::{
2 ptr,
3 task::{RawWaker, RawWakerVTable, Waker},
4};
5
6pub fn create() -> Waker {
7 // Safety: The waker points to a vtable with functions that do nothing. Doing
8 // nothing is memory-safe.
9 unsafe { Waker::from_raw(RAW_WAKER) }
10}
11
12const RAW_WAKER: RawWaker = RawWaker::new(ptr::null(), &VTABLE);
13const VTABLE: RawWakerVTable = RawWakerVTable::new(clone, wake, wake_by_ref, drop);
14
15unsafe fn clone(_: *const ()) -> RawWaker {
16 RAW_WAKER
17}
18
19unsafe fn wake(_: *const ()) {}
20
21unsafe fn wake_by_ref(_: *const ()) {}
22
23unsafe fn drop(_: *const ()) {}