0.1.1 |
|
---|---|
0.1.0 |
|
#17 in #aid
13KB
153 代码行
Wakeful
辅助实现 Waker
和与任务一起工作的实用工具。
文档
请查看 文档 了解 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(),
}
}
}