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

Apache-2.0

67KB
848

safina

crates.io version license: Apache 2.0 unsafe forbidden pipeline status

一个安全的 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_channelSyncSender
    • 添加 Receiver::async_recv 允许用户无需编写丑陋的 (&mut receiver).await 就可以等待。
    • 删除 Receiver::blocking 并添加 try_recvrecv 等。
  • v0.3.0
    • 将结构体移动到子模块中。
    • Promise 替换为支持异步和阻塞读取的 oneshotOneSenderReceiver
    • schedule_blocking 返回新的 sync::Receiver
  • v0.2.1 - 更新文档。
  • v0.2.0
    • Executor::newExecutor::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

依赖项