2 个版本
0.1.1 | 2024 年 2 月 18 日 |
---|---|
0.1.0 | 2023 年 12 月 17 日 |
#1855 在 异步
1,062 每月下载
在 9 crate 中使用
16KB
163 行
smol-macros
用于使用 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 License, Version 2.0 (LICENSE-APACHE 或 https://apache.ac.cn/licenses/LICENSE-2.0)
- MIT 许可证 (LICENSE-MIT 或 http://opensource.org/licenses/MIT)
。
贡献
除非您明确声明,否则您根据 Apache-2.0 许可证定义的任何有意提交的工作贡献,将根据上述条款双重许可,不附加任何额外条款或条件。
依赖关系
~3–11MB
~127K SLoC