#rpc #rkyv #helper #codec #no-std

no-std rkyv_rpc

Helpers for defining an RPC protocol using rkyv

2 releases

0.0.1-beta.1 Aug 14, 2024
0.0.0-alpha.0 Aug 13, 2024

#725 in Encoding

35 downloads per month

MIT/Apache

21KB
379 lines

rkyv_rpc

crates.io Documentation MIT/Apache-2 licensed

Synopsis

This crate provides a macro to declare an enum specifically to carry RPC commands in such a way as to ensure cross-endian and backwards compatibility.

Unlike #[derive(rkyv::Archive)], this implementation create a custom enum discriminator for which the bytes are mirrored, creating the same representation regardless or endianness. Furthermore, this allows for discriminators larger than 1 byte, allowing one to space out custom discriminator values to allow for older software to still accept the same data structures while gracefully failing to recognize newer discriminants.

Furthermore, a framed codec is provided for safely reading and writing binary streams of rkyv objects.

Cargo Features

  • codec (default) - Enables the Encoder/Decoder implementations to write/read rkyv objects to byte buffers and AsyncWrite/AsyncRead streams via tokio's Framed
  • unaligned - Enable unaligned accesses by default for rkyv. This saves an extra clone of the incoming bytes before decoding.

Dependencies

~5–11MB
~119K SLoC