Skip to main content

DedupSerializerState

Trait DedupSerializerState 

Source
pub trait DedupSerializerState: Sized {
    // Required methods
    fn record_serialized<T: Dedup>(
        &self,
        value: &T,
    ) -> Option<Result<DedupId, DedupId>>;
    fn record_deserialized<T: Dedup>(&self, id: DedupId, value: T);
    fn get_deserialized<T: Dedup>(&self, id: DedupId) -> Option<T>;
}
Expand description

The state threaded through (de)serialization to deduplicate values. Use () to serialize values normally and DedupSerializer to deduplicate them.

Required Methods§

Source

fn record_serialized<T: Dedup>( &self, value: &T, ) -> Option<Result<DedupId, DedupId>>

Record that we’re serializing this value. Returns None if we’re not deduplicating values, Some(Ok(id)) the first time we meet a given value (it must then be serialized in full), and Some(Err(id)) afterwards (only the id must be serialized).

Source

fn record_deserialized<T: Dedup>(&self, id: DedupId, value: T)

Record that we deserialized the value with this id.

Source

fn get_deserialized<T: Dedup>(&self, id: DedupId) -> Option<T>

Find the previously-deserialized value with that id.

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety".

Implementations on Foreign Types§

Source§

impl DedupSerializerState for ()

Don’t deduplicate anything.

Source§

fn record_serialized<T: Dedup>( &self, _value: &T, ) -> Option<Result<DedupId, DedupId>>

Source§

fn record_deserialized<T: Dedup>(&self, _id: DedupId, _value: T)

Source§

fn get_deserialized<T: Dedup>(&self, _id: DedupId) -> Option<T>

Implementors§