#session #type #async-channel #channel #protocols #async

dialectic

Rust的传输多态、异步会话类型

5 个版本 (3 个破坏性更新)

0.4.1 2021年4月1日
0.4.0 2021年4月1日
0.3.0 2021年2月11日
0.2.0 2021年1月13日
0.1.1 2020年12月18日

#753异步

Download history 30/week @ 2024-02-19 29/week @ 2024-02-26 15/week @ 2024-03-04 23/week @ 2024-03-11 14/week @ 2024-03-18 12/week @ 2024-03-25 47/week @ 2024-04-01 6/week @ 2024-04-08 8/week @ 2024-04-15

每月73次下载
7 个crate中使用 (6 个直接使用)

MIT 许可证

150KB
1.5K SLoC

Dialectic

Rust license: MIT crates.io docs.rs documentation

dialectic (名词): 通过提出论题、发展对立的论题,并将它们结合起来形成一个连贯的合题的过程。

dialectic (crate): 异步Rust的传输多态会话类型。

当两个并发进程通信时,最好给它们的消息指定 类型,这样可以确保每个消息都是预期形式。

  • 常规类型 仅描述可以通信的 有效内容
  • 会话类型 描述 何时可以通信 以及 如何通信

此crate提供对几乎所有异步通道的泛型包装,通过编译时保证,确保任何使用该通道的代码都不会违反指定的 会话协议。这样的包装通道

  • 在时间和内存方面几乎没有 运行时成本
  • 基于 async/.await 构建,以允许与Rust强大的 async 生态系统集成;
  • 优雅地处理运行时协议违规,不会引入 恐慌
  • 如果指定类型,允许进行 全双工并发通信,同时保留所有相同的会话类型安全性保证;
  • 甚至可以实现 无上下文会话,这是一种比大多数其他会话类型库支持的会话类型更通用的形式。

这些功能使得Dialectic非常适合编写需要确保现实世界中 高可用性复杂协议正确性属性 的网络服务,在这些服务中,协议可能会被违反,连接可能会断开。

Dialectic支持许多异步运行时和后端,如果您不想或不需要自己编写

这些库也是编写您自己的后端的良好参考。

接下来做什么?

  • 如果您对会话类型比较陌生,您可能可以从 教程风格的库游览 开始。
  • 如果您熟悉会话类型,您可以直接跳转到 快速参考,然后阅读有关用于指定会话类型的 Session! 宏的更多信息,并继续查看 types 模块和 Chan 的文档。
  • 您还可以查看 完整的自包含示例,这些示例展示了如何将库的所有功能结合在一起来构建会话类型网络程序。
  • 如果您想将您自己的通道类型与 Dialectic 集成,您需要实现来自 backend 模块的 TransmitReceive 特性。
  • 或者,您可以深入了解 参考文档...

依赖关系

~3–5.5MB
~104K SLoC