#async #macro #proc-macro #color #library

decolor

异步运行时抽象,用于隐式函数去色

3个版本

0.1.2 2023年10月22日
0.1.1 2023年10月22日
0.1.0 2023年10月22日

#521 in 过程宏

MIT许可证

225KB

decolor

Build Status License Docs Latest Version rustc 1.31+

异步运行时抽象,用于隐式函数去色。 Decolor处于https://github.com/refcell/decolor/labels/beta测试阶段

安装 | 用户文档 | crate文档 | 参考 | 贡献 | 许可证

什么是decolor?

decolor是一个过程宏crate,实现了一个#[decolor] 属性宏,用于将异步Rust函数“去色”。具体来说,#[decolor]宏可以放在异步函数之上,安全地将它转换成一个“紫色”函数(一个内部阻塞异步功能的同步函数)。

1:以这种方式构建 block_on() 调用可以防止嵌套运行时恐慌,但如果提供的未来发生恐慌或者在一个定时器未来被调用的运行时在完成之前关闭,调用 Handle block_on 方法本身会 引发恐慌。此外,如果 Runtimeblock_on 调用在异步执行上下文中执行,它将 引发恐慌

用法

使用 cargo 将 decolor 添加为依赖项。

cargo add decolor

一个使用 [decolor][decolor] 装饰器构建紫色函数的简短示例。

use decolor::decolor;
use tokio::time::{sleep, Duration};

#[decolor]
async fn foo() -> anyhow::Result<()> {
    sleep(Duration::from_secs(1)).await;
    println!("Hello, world!");
    Ok(())
}

fn main() {
    assert!(foo().is_ok());
}

贡献

欢迎所有贡献!鼓励实验,也欢迎提出新问题。

故障排除 & 错误报告

请检查现有问题以查找类似的错误,如果尚未存在相关问题,请 打开一个问题

许可

本项目受 MIT 许可证 许可。免费且开源,永远。 所有我们的 Rust 都属于你。

依赖

~2.8–9.5MB
~77K SLoC