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 异步

Download history 46270/week @ 2024-03-14 52375/week @ 2024-03-21 44767/week @ 2024-03-28 44917/week @ 2024-04-04 51715/week @ 2024-04-11 55902/week @ 2024-04-18 54506/week @ 2024-04-25 50162/week @ 2024-05-02 50428/week @ 2024-05-09 55385/week @ 2024-05-16 47974/week @ 2024-05-23 40770/week @ 2024-05-30 42906/week @ 2024-06-06 46335/week @ 2024-06-13 44666/week @ 2024-06-20 42053/week @ 2024-06-27

182,717 每月下载量
491 个crate中使用了(235个直接使用)

Apache-2.0/MIT

10KB
77

Pollster

Pollster是一个极简的Rust异步执行器,可以让您阻塞线程,直到future完成。

Cargo Documentation License actions-badge

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