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§
- Rkyv
Writer - Wraps an
AsyncWrite
and implementsSink
to serializeArchive
objects.
Enums§
Functions§
- archive_
sink - Rewrites a single buffer representing an Archive to an
AsyncWrite
- archive_
sink_ bytes - Writes a single
Object
from abytes::Bytes
- archive_
stream - Reads a single
&Archived<Object>
from anAsyncRead
using the passed buffer. - archive_
stream_ bytes - Reads a single
&Archived<Object>
from abytes::Bytes
into the passed buffer if validation enabled. - archive_
stream_ ⚠bytes_ unsafe - Reads a single
&Archived<Object>
from abytes::Bytes
into the passed buffer - archive_
stream_ ⚠unsafe - Reads a single
&Archived<Object>
from anAsyncRead
without checking for correct byte formatting