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-executorv0.1.3 API - v0.1.5 - 添加
safina_sync::Mutex - v0.1.4 - 升级到新的 safina-executor 版本,删除了对
Box::pin的需求。 - v0.1.3 - 更新文档
- v0.1.2 - 将
safinacrate 重命名为safina-executor。添加了新的safinacrate,包括重导出、示例和集成测试。 - v0.1.1 - 在 readme 中添加徽章
- v0.1.0 - 首次发布版本
TO DO
- 添加一个
init函数,该函数创建一个执行器并启动计时器线程。 - 添加一个
#[async_main]宏
许可证:Apache-2.0