7个版本
0.1.7 | 2022年1月24日 |
---|---|
0.1.6 | 2021年12月20日 |
0.1.3 | 2021年11月19日 |
0.1.0 | 2021年7月17日 |
#6 in #ocaml
每月38次下载
用于timens
38KB
988 代码行
binprot-rs
在Rust中的Bin_prot二进制协议
这个crate提供了bin_prot序列化,并尝试与OCaml版本兼容相同类型。
在examples
目录中包括了一个与OCaml Async_rpc兼容的微小RPC实现。在OCaml中定义的Query
消息如下,可以在实现中找到。
module Query = struct
type 'a needs_length =
{ tag : Rpc_tag.t
; version : int
; id : Query_id.t
; data : 'a
}
[@@deriving bin_io]
type 'a t = 'a needs_length [@@deriving bin_read]
end
使用Rust的等效类型
#[derive(BinProtRead, BinProtWrite)]
struct Query<T> {
rpc_tag: String,
version: i64,
id: i64,
data: binprot::WithLen<T>,
}
这并不使用serde(见serde-binprot),而是独立实现derive
宏,以便更好地控制序列化。特别是可以通过这种方式支持多态变体。
依赖
~1.3–2.8MB
~57K SLoC