logo
pub struct BufferSerializer<T> { /* private fields */ }
Expand description

Wraps a byte buffer and equips it with Serializer.

Common uses include archiving in #![no_std] environments and archiving small objects without allocating.

Examples

use rkyv::{
    archived_value,
    ser::{Serializer, serializers::BufferSerializer},
    AlignedBytes,
    AlignedVec,
    Archive,
    Archived,
    Serialize,
};

#[derive(Archive, Serialize)]
enum Event {
    Spawn,
    Speak(String),
    Die,
}

let mut serializer = BufferSerializer::new(AlignedBytes([0u8; 256]));
let pos = serializer.serialize_value(&Event::Speak("Help me!".to_string()))
    .expect("failed to archive event");
let buf = serializer.into_inner();
let archived = unsafe { archived_value::<Event>(buf.as_ref(), pos) };
if let Archived::<Event>::Speak(message) = archived {
    assert_eq!(message.as_str(), "Help me!");
} else {
    panic!("archived event was of the wrong type");
}

Implementations

Creates a new archive buffer from a byte buffer.

Creates a new archive buffer from a byte buffer. The buffer will start writing at the given position, but the buffer must contain all bytes (otherwise the alignments of types may not be correct).

Consumes the serializer and returns the underlying type.

Trait Implementations

Formats the value using the given formatter. Read more

Returns the “default value” for a type. Read more

The error produced by any failing methods.

Returns the current position of the serializer.

Attempts to write the given bytes to the serializer.

Advances the given number of bytes as padding.

Aligns the position of the serializer to the given alignment.

Aligns the position of the serializer to be suitable to write the given type.

Resolves the given value with its resolver and writes the archived type. Read more

Archives the given object and returns the position it was archived at.

Resolves the given reference with its resolver and writes the archived reference. Read more

Archives a reference to the given object and returns the position it was archived at.

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

The archived version of the pointer metadata for this type.

Converts some archived metadata to the pointer metadata for itself.

Immutably borrows from an owned value. Read more

Mutably borrows from an owned value. Read more

Deserializes using the given deserializer

Returns the argument unchanged.

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

The type for metadata in pointers and references to Self.

The type returned in the event of a conversion error.

Performs the conversion.

The type returned in the event of a conversion error.

Performs the conversion.