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应用程序带来高性能。
  • 过程宏:使用WiringUnwiring宏来自动推导序列化和反序列化,可选的自定义数字类型标签用于较大的枚举。

过程宏使用

Wiring提供过程宏WiringUnwiring以简化自动实现和枚举变体的标记。宏可以使用如下方式

#[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