7 releases
0.1.7 | Jan 24, 2022 |
---|---|
0.1.6 | Dec 20, 2021 |
0.1.3 | Nov 19, 2021 |
0.1.0 | Jul 17, 2021 |
#9 in #ocaml
23 downloads per month
Used in timens
38KB
988 lines
binprot-rs
Bin_prot binary protocols in Rust
This crates provides bin_prot serialization and tries to be compatible with the OCaml version for similar types.
The examples
directory includes a tiny RPC implementation compatible with
OCaml Async_rpc.
The Query
message is defined as follows in OCaml as can be found in the
implementation.
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
The equivalent type using Rust would be:
#[derive(BinProtRead, BinProtWrite)]
struct Query<T> {
rpc_tag: String,
version: i64,
id: i64,
data: binprot::WithLen<T>,
}
This does not use serde (see
serde-binprot) but instead
implements the derive
macro independently so as to provide better control on
serialization. In particular polymorphic variants can be supported thanks
to this.
Dependencies
~1.3–7MB
~58K SLoC