#waker #aid #tasks #async #wake #traits #own

已删除 wakeful

辅助实现唤醒器和与任务一起工作的实用工具

0.1.1 2020年1月2日
0.1.0 2020年1月2日

#17 in #aid

MIT 许可证

13KB
153 代码行

Wakeful

辅助实现 Waker 和与任务一起工作的实用工具。

Crates.io Documentation License Maintenance Build

文档

请查看 文档 了解 Wakeful 可以做什么以及如何使用它。

许可证

此库使用 MIT 许可证授权。有关详细信息,请参阅 LICENSE 文件。


lib.rs:

辅助实现 Waker 和与任务一起工作的实用工具。

此crate的亮点是 Wake,它允许您通过实现此特质来从您自己的类型构建唤醒器。

示例

使用此crate实现自己的 block_on 函数

use std::{
    future::Future,
    pin::Pin,
    task::{Context, Poll},
    thread,
};
use wakeful::Wake;

fn block_on<F: Future>(mut future: F) -> F::Output {
    let waker = thread::current().into_waker();
    let mut context = Context::from_waker(&waker);
    let mut future = unsafe { Pin::new_unchecked(&mut future) };

    loop {
        match future.as_mut().poll(&mut context) {
            Poll::Ready(output) => return output,
            Poll::Pending => thread::park(),
        }
    }
}

无运行时依赖