Crates.io | binprot |
lib.rs | binprot |
version | 0.1.7 |
source | src |
created_at | 2021-07-17 09:50:21.247678 |
updated_at | 2022-01-24 20:47:59.663396 |
description | Rust implementation of the bin_prot protocol. |
homepage | |
repository | https://github.com/LaurentMazare/binprot-rs |
max_upload_size | |
id | 424007 |
size | 85,202 |
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.