Skip to main content

Packing

Struct Packing 

Source
pub struct Packing<'a> { /* private fields */ }
Expand description

Whatever a Codec can write down, kept — by a Keeper that never finds out any of it was ever anything but bytes.

A store and a wire ask an opaque value the same question, so the pair (keeper, codec) is wired up once here rather than once per tenant. What is decided here is that the directions are not symmetrical: failing to name a value costs the name and the run goes on, while failing to keep it or to read it back is the keeper’s error.

Implementations§

Source§

impl<'a> Packing<'a>

Source

pub fn over(inner: &'a dyn Keeper, codec: &'a dyn Codec) -> Self

That keeper, with that codec in front of it.

Trait Implementations§

Source§

impl Keeper for Packing<'_>

Source§

fn present(&self, keys: &[&Key]) -> Result<Vec<bool>, KeeperError>

Straight through: whether something is kept is a question about names, and a codec has nothing to say about a name.

Source§

fn key_of(&self, value: &Value) -> Option<Key>

The key of a value by its content, which only a root needs: from there down, keys come from keys. None if the value cannot leave this process, which is not a failure — nothing below it is cached either.
Source§

fn combine(&self, parts: &[&str]) -> Key

One key out of the ingredients of a recipe, in the order given. The parts have to stay apart: run together, ["ab", "c"] and ["a", "bc"] would name the same thing.
Source§

fn recall(&self, keys: &[&Key]) -> Result<Vec<Option<Kept>>, KeeperError>

What is kept under each of these, in the order they were asked. In batch form from the first day: against a remote store, one question per item is one round trip per item.
Source§

fn keep( &self, key: &Key, value: &Value, meta: &[(&str, &str)], ) -> Result<(), KeeperError>

Keeps this, with what should be remembered beside it — the fingerprint of the code that produced it, above all, which is not in the key and is what a hit gets compared against.

Auto Trait Implementations§

§

impl<'a> Freeze for Packing<'a>

§

impl<'a> !RefUnwindSafe for Packing<'a>

§

impl<'a> Send for Packing<'a>

§

impl<'a> Sync for Packing<'a>

§

impl<'a> Unpin for Packing<'a>

§

impl<'a> UnsafeUnpin for Packing<'a>

§

impl<'a> !UnwindSafe for Packing<'a>

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

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

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.