#async-io #macro #async-await #async #io #async-executor #await

dev smol-macros

用于设置 smol 运行时的宏

2 个版本

0.1.1 2024 年 2 月 18 日
0.1.0 2023 年 12 月 17 日

#1855异步

Download history 399/week @ 2024-04-20 225/week @ 2024-04-27 363/week @ 2024-05-04 264/week @ 2024-05-11 362/week @ 2024-05-18 511/week @ 2024-05-25 263/week @ 2024-06-01 284/week @ 2024-06-08 197/week @ 2024-06-15 251/week @ 2024-06-22 124/week @ 2024-06-29 343/week @ 2024-07-06 214/week @ 2024-07-13 355/week @ 2024-07-20 275/week @ 2024-07-27 211/week @ 2024-08-03

1,062 每月下载
9 crate 中使用

Apache-2.0 OR MIT

16KB
163

smol-macros

Build License Cargo Documentation

用于使用 smol-rs 的宏。

smol 的一个优点是它允许你设置自己的执行器,该执行器针对你的用例进行了优化。然而,对于许多组织用例来说,快速搭建脚手架非常重要。尤其是在需要合理的默认值时,设置自己的执行器是一种浪费时间的行为。

此 crate 提供了快速有效地设置高效 smol 运行时的宏。它提供了对大多数应用程序有用的合理默认值。

简单执行器

只需要一个使用 main 宏的 async 主函数。

use smol_macros::main;

main! {
    async fn main() {
        println!("Hello, world!");
    }
}

此 crate 使用声明性宏而不是过程性宏,以避免需要使用重量级宏依赖项。如果你想使用过程宏语法,可以使用 macro_rules_attribute::apply 函数来模拟它。

以下示例与前面的示例等效。

use macro_rules_attribute::apply;
use smol_macros::main;

#[apply(main!)]
async fn main() {
    println!("Hello, world!");
}

基于任务的执行器

此 crate 重新导出 smol::Executor。如果将其用作 main 函数的第一个参数,它将自动创建执行器。

use macro_rules_attribute::apply;
use smol_macros::{main, Executor};

#[apply(main!)]
async fn main(ex: &Executor<'_>) {
    ex.spawn(async { println!("Hello world!"); }).await;
}

如果使用线程安全的 smol::Executor,则将创建一个线程池来在多个线程上运行执行器。对于线程不安全的 smol::LocalExecutor,不会创建线程。

有关 main 函数的更多详细信息,请参阅文档。

测试

使用 test 宏来设置运行自包含执行器的测试用例。

use macro_rules_attribute::apply;
use smol_macros::{test, Executor};

#[apply(test!)]
async fn do_test(ex: &Executor<'_>) {
    ex.spawn(async {
        assert_eq!(1 + 1, 2);
    }).await;
}

MSRV 策略

本软件包的最小支持 Rust 版本 (MSRV) 为 1.63。作为一个 初步 策略,MSRV 不会超过由 Debian Stable 提供的 当前 Rust 版本。在撰写本文时,此版本的 Rust 为 1.63。但是,如果发生主要生态系统转变或安全漏洞,MSRV 可能会进一步提高。

许可证

根据您的选择,许可协议为以下之一

贡献

除非您明确声明,否则您根据 Apache-2.0 许可证定义的任何有意提交的工作贡献,将根据上述条款双重许可,不附加任何额外条款或条件。

依赖关系

~3–11MB
~127K SLoC