16 个版本
0.3.3 | 2022 年 4 月 1 日 |
---|---|
0.3.2 | 2022 年 3 月 24 日 |
0.2.1 | 2022 年 2 月 25 日 |
0.1.10 | 2021 年 6 月 25 日 |
0.1.7 | 2020 年 12 月 29 日 |
在 异步 中排名第 1343
用于 permit
67KB
848 行
safina
一个安全的 Rust 异步运行时。
这个包简单地将各种 safina-*
包导出。
特性
禁止(不安全代码)
- 只依赖
std
- 良好的测试覆盖率 (>95%)
限制
- 在
stable
上构建需要包含一些不安全代码的once_cell
包。这是必要的,直到std::lazy::OnceCell
变得稳定。 - 尚无
fs
模块。async-fs
是一个与 Safina 兼容的快速异步网络库。它包含一些不安全代码。 net
模块性能较差。async-net
是一个与 Safina 兼容的快速异步网络库。它包含一些不安全代码。- 未优化
示例
let executor = safina::executor::Executor::default();
let (sender, receiver) = std::sync::mpsc::channel();
executor.spawn(async move {
sender.send(()).unwrap();
});
receiver.recv().unwrap();
let result = safina::executor::block_on(async {
prepare_request().await?;
execute_request().await
})?;
相关
safina_async_test
包有一个用于运行async fn
测试函数的#[async_test]
宏。
替代品
smol
- 流行
- 包含一些
unsafe
代码
async-std
- 非常流行
- 包含大量
unsafe
代码
futures
- 非常流行
- 包含大量
unsafe
代码
tokio
- 非常流行
- 快速
- 内部极其复杂
- 充满
unsafe
代码
bastion
- 包含大量
unsafe
代码
- 包含大量
nostd_async
更新日志
更新日志
- v0.3.3 - 更新文档。
- v0.3.2 - 添加
threadpool
模块。 - v0.3.1
- 添加
sync_channel
和SyncSender
。 - 添加
Receiver::async_recv
允许用户无需编写丑陋的(&mut receiver).await
就可以等待。 - 删除
Receiver::blocking
并添加try_recv
、recv
等。
- 添加
- v0.3.0
- 将结构体移动到子模块中。
- 将
Promise
替换为支持异步和阻塞读取的oneshot
、OneSender
和Receiver
。 schedule_blocking
返回新的sync::Receiver
。
- v0.2.1 - 更新文档。
- v0.2.0
Executor::new
和Executor::with_name
返回Result
。ThreadPool::new
返回Result
。ThreadPool::try_schedule
在无法重新启动崩溃的线程时返回错误。ThreadPool::schedule
处理启动替代线程失败的情况。
- v0.1.10 -
block_on
函数可以接受不是Send
的 future。 - v0.1.9 - 默认使用
once_cell
。 - v0.1.8 - 支持 rust 1.51 和
once_cell
。 - v0.1.7 - 添加
safina-net
- v0.1.6 - 使用
safina-executor
v0.1.3 API - v0.1.5 - 添加
safina_sync::Mutex
- v0.1.4 - 升级到新的 safina-executor 版本,删除了对
Box::pin
的需求。 - v0.1.3 - 更新文档
- v0.1.2 - 将
safina
crate 重命名为safina-executor
。添加了新的safina
crate,包括重导出、示例和集成测试。 - v0.1.1 - 在 readme 中添加徽章
- v0.1.0 - 首次发布版本
TO DO
- 添加一个
init
函数,该函数创建一个执行器并启动计时器线程。 - 添加一个
#[async_main]
宏
许可证:Apache-2.0