10 个版本
0.2.2 | 2024 年 7 月 8 日 |
---|---|
0.2.1 | 2024 年 4 月 26 日 |
0.1.6 | 2024 年 4 月 10 日 |
0.1.2 | 2024 年 2 月 18 日 |
#497 在 解析器实现
190KB
5K SLoC
接线
欢迎使用接线,这是一个为 Rust 设计的高级异步序列化框架。接线旨在通过允许在异步流中传输类型和通道,以实现高效通信模式,从而在并发应用程序中启用高效通信。
主要特性
- 异步序列化:以最小的开销异步序列化和反序列化数据结构。
- 通道支持:在网络中无缝发送和接收 Rust 通道,充分利用 Rust 强大的并发模型。
- 流兼容性:与任何异步流一起工作,包括 TcpStream,以便灵活集成不同的传输层。
- 嵌套通道:支持嵌套通道,启用如通道-通道通信等复杂的通信结构。
- WIP:WebAssembly (WASM) 支持:使用完整的 WASM 支持在浏览器中运行 Rust 代码,为 Web 应用程序带来高性能。
- 过程宏:使用
Wiring
,Unwiring
宏来自动推导反序列化,可选的自定义数字类型标签用于较大的枚举。
过程宏使用
接线提供过程宏 Wiring
,Unwiring
以方便自动实现,枚举变体的标记。该宏可以使用如下方式
#[derive(Wiring, Unwiring)]
#[tag(u8)]
enum MyEnum {
VariantOne { reply: tokio::sync::oneshot::Sender<()>, request: String, },
VariantN,
}
tag
属性是可选的。默认情况下,使用 u16
用于标记,这确保了未来的兼容性。然而,为了更好的空间和带宽效率,建议使用 u8
。
注意
- 标记类型范围:默认选择
u16
支持多达u16::MAX
个变体。如果您的枚举具有更少或更多的变体,请考虑使用标记属性指定自定义标记类型。 - 未来扩展:虽然建议使用
u8
以提高空间和带宽效率,但提前指定较大的标记类型是明智的,以防止未来的破坏性更改。 - 互操作性:确保所选的标记类型与与序列化数据交互的任何系统的预期相匹配,以保持兼容性。
入门
要将Wiring包含到您的Rust项目中,请将以下内容添加到您的Cargo.toml
文件中:
[dependencies]
wiring = "0.2"
请检查https://github.com/louaykamel/wiring/tree/master/examples文件夹。
贡献
欢迎对Wiring做出贡献!请阅读我们的贡献指南,开始帮助改进项目。
许可
Wiring遵循Apache 2.0许可协议 - 请参阅https://github.com/louaykamel/wiring/blob/master/LICENSE文件以获取详细信息。
致谢
- 向所有Wiring的贡献者和用户表示衷心的感谢!
依赖项
~12–25MB
~384K SLoC