rkyv_codec
Simple async codec for rkyv. Reuses streaming buffer for maximum speed!
This crate provides a makeshift adaptor for streaming &Archived<Object>s from an AsyncRead using a reusable external buffer, as well as a futures::Sink implementation to serialize Objects to an AsyncWrite.
It uses multiformat's unsigned_varint for variable-length length encoding.
Examples
This crate has two examples: chat_client & chat_server. Run both of them at the same time to see a proof-of-concept Archive tcp stream in action.
To run:
cargo run --example chat_client
cargo run --eaxmple chat_server
Simple usage example:
// Checkbytes is required
let value = Test ;
// Writing
let writer = Vecnew;
let mut codec = new;
codec.send.await.unwrap;
// Reading
let mut reader = &codec.inner;
let mut buffer = new; // Aligned streaming buffer for re-use
let data: & = .await.unwrap; // This returns a reference into the passed buffer
let value_received: Test = data.deserialize.unwrap;
assert_eq!;