8个版本
0.3.0 | 2023年2月7日 |
---|---|
0.2.5 | 2022年1月18日 |
0.2.4 | 2021年4月23日 |
0.2.2 | 2021年3月18日 |
0.1.0 | 2020年4月7日 |
#20 in 异步
182,717 每月下载量
在 491 个crate中使用了(235个直接使用)
10KB
77 行
Pollster
Pollster是一个极简的Rust异步执行器,可以让您阻塞线程,直到future完成。
use pollster::FutureExt as _;
let my_fut = async {};
let result = my_fut.block_on();
仅此而已。这就是它能做的。不多也不少。不需要引入50个crate来评估一个future。
这有什么用呢?
现在async函数已经稳定,我们越来越多地看到Rust生态系统中的库都公开了async API。这对于想要构建高度并发Web应用程序的人来说真是太棒了!
然而,我们中许多人并不是在构建高度并发的Web应用程序,而最终面对的是我们不能从同步代码中轻易调用的async函数。如果您处于这种情况,那么pollster就是为您准备的:它允许您就地评估future,而无需启动像tokio或async_std这样的重型运行时。
极简主义
Pollster本着UNIX精神构建:只做一件事,做好这件事。它没有依赖项,编译速度快,由大约100行经过良好审计的代码组成。
行为
Pollster将同步阻塞线程,直到future完成。它不会空转:相反,它将线程置于等待状态,直到future被轮询完成。
兼容性
遗憾的是,pollster不会适用于所有future,因为一些需要特定的运行时或反应堆。有关pollster何时何地可能使用的更多信息,请参阅此处。但是,如果您一开始就引入了创建此类future所需的依赖项,那么您依赖树中很可能已经有一个专为轮询您的future而设计的block_on版本,所以请使用那个。
宏
当使用 macro
crate 功能时,可以使用属性宏来标记 async fn main()
#[pollster::main]
async fn main() {
let my_fut = async {};
my_fut.await;
}
另外,如果你以不同的名称重新导出 crate,而不是 pollster
,则必须指定它
#[pollster::main(crate = "renamed-pollster")]
async fn main() {
let my_fut = async {};
my_fut.await;
}
你还可以使用 #[pollster::test]
进行测试。
依赖关系
~215KB