5个版本
0.2.1 | 2024年4月26日 |
---|---|
0.2.0 | 2024年4月26日 |
0.1.2 | 2024年4月10日 |
0.1.1 | 2024年4月9日 |
0.1.0 | 2024年4月6日 |
#41 in #macro-helpers
在wiring中使用
57KB
1K SLoC
Wiring
欢迎使用Wiring,一个用于Rust的高级异步序列化框架。Wiring旨在通过允许异步流中传输类型和通道,以实现高效的通信模式,从而在并发应用程序中。
主要特性
- 异步序列化:以最小的开销异步序列化和反序列化数据结构。
- 通道支持:在网络中无缝发送和接收Rust通道,充分利用Rust强大的并发模型。
- 流兼容性:适用于任何异步流,包括TcpStream,可以灵活地与其他传输层集成。
- 嵌套通道:支持嵌套通道,使复杂的通信结构,如通道-通道通信成为可能。
- WIP:WebAssembly (WASM) 支持:使用完整的WASM支持在浏览器中运行Rust代码,为Web应用程序带来高性能。
- 过程宏:使用
Wiring
,Unwiring
宏来自动推导序列化和反序列化,可选的自定义数字类型标签用于较大的枚举。
过程宏使用
Wiring提供过程宏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
以提高空间和带宽效率,但提前指定更大的标签类型是谨慎的,以防止未来的破坏性更改。 - 互操作性:确保所选的标签类型符合与序列化数据交互的任何系统的期望,以保持兼容性。
入门指南
要在Rust项目中包含Wiring,请在您的 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的贡献者和用户表示衷心的感谢!
依赖项
~280–730KB
~17K SLoC