Crates.io | rkyv_rpc |
lib.rs | rkyv_rpc |
version | 0.0.1-beta.1 |
source | src |
created_at | 2024-08-13 22:29:44.494325 |
updated_at | 2024-08-14 23:58:04.913212 |
description | Helpers for defining an RPC protocol using rkyv |
homepage | |
repository | https://github.com/Lantern-chat/rkyv_rpc |
max_upload_size | |
id | 1336575 |
size | 48,856 |
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.
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.