rtbase 0.1.0

async runtime base code
Documentation
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
pub struct UidWaker<T: UidWake>(std::marker::PhantomData<T>);

pub trait UidWake {
    fn wake(id: usize);
}

impl<T: UidWake> UidWaker<T> {
    pub fn create(id: usize) -> std::task::Waker {
        unsafe { std::task::Waker::from_raw(std::task::RawWaker::new(id as _, &Self::VT)) }
    }

    const VT: std::task::RawWakerVTable = std::task::RawWakerVTable::new(
        |id| std::task::RawWaker::new(id, &Self::VT),
        |id| T::wake(id as _),
        |id| T::wake(id as _),
        |_| {},
    );
}