Crate rkyv_codec

Source
Expand description

Simple usage example:

#[derive(Archive, Deserialize, Serialize, Debug, PartialEq, Clone)]
#[archive_attr(derive(CheckBytes, Debug))] // Checkbytes is required
struct Test {
    int: u8,
    string: String,
    option: Option<Vec<i32>>,
}
let value = Test {
    int: 42,
    string: "hello world".to_string(),
    option: Some(vec![1, 2, 3, 4]),
};

// Writing
let writer = Vec::new();
let mut codec = RkyvWriter::<_, VarintLength>::new(writer);
codec.send(&value).await.unwrap();

// Reading
let mut reader = &codec.inner()[..];
let mut buffer = AlignedVec::new(); // Aligned streaming buffer for re-use
let data: &Archived<Test> = archive_stream::<_, Test, VarintLength>(&mut reader, &mut buffer).await.unwrap(); // This returns a reference into the passed buffer
let value_received: Test = data.deserialize(&mut Infallible).unwrap();

assert_eq!(value, value_received);

Re-exports§

pub use length_codec::VarintLength;

Modules§

length_codec
Abstract length encodings for reading and writing streams

Structs§

RkyvWriter
Wraps an AsyncWrite and implements Sink to serialize Archive objects.

Enums§

RkyvCodecError

Functions§

archive_sink
Rewrites a single buffer representing an Archive to an AsyncWrite
archive_sink_bytes
Writes a single Object from a bytes::Bytes
archive_stream
Reads a single &Archived<Object> from an AsyncRead using the passed buffer.
archive_stream_bytes
Reads a single &Archived<Object> from a bytes::Bytes into the passed buffer if validation enabled.
archive_stream_bytes_unsafe
Reads a single &Archived<Object> from a bytes::Bytes into the passed buffer
archive_stream_unsafe
Reads a single &Archived<Object> from an AsyncRead without checking for correct byte formatting