Skip to main content

CompositeStore

Struct CompositeStore 

Source
pub struct CompositeStore { /* private fields */ }
Expand description

Read-only store that consults an ordered list of backends.

§Errors

Reads (ObjectStore::read, read_into, read_info, open_stream) skip past a backend whose copy is damaged (Error::Zlib or Error::CorruptObject) and return a later backend’s good copy. When no backend returns the object, the first such corruption error is returned instead of Ok(None). Any other backend error is returned immediately.

Implementations§

Source§

impl CompositeStore

Source

pub fn new(stores: Vec<Arc<dyn ObjectStore>>, hash_algo: HashAlgo) -> Self

Build a composite from stores in lookup order (first match wins).

hash_algo is used when every child is empty; otherwise the first store’s algorithm applies.

Source

pub fn stores(&self) -> &[Arc<dyn ObjectStore>]

Backends in lookup order (read-only).

Trait Implementations§

Source§

impl Debug for CompositeStore

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl ObjectStore for CompositeStore

Source§

fn hash_algo(&self) -> HashAlgo

Hash algorithm for objects written through this store.
Source§

fn read(&self, oid: &ObjectId) -> Result<Option<Object>>

Load the full object, if present. Read more
Source§

fn read_into( &self, oid: &ObjectId, buf: &mut Vec<u8>, ) -> Result<Option<ObjectKind>>

Load object payload into buf, reusing its capacity when possible. Read more
Source§

fn read_info(&self, oid: &ObjectId) -> Result<Option<ObjectInfo>>

Object kind and size without loading the full payload. Read more
Source§

fn contains(&self, oid: &ObjectId) -> Result<bool>

Whether oid is stored in this backend (without reading the payload). Read more
Source§

fn contains_many(&self, oids: &[ObjectId]) -> Result<Vec<bool>>

For each id in oids, whether it is stored in this backend; the result has one entry per input id, in input order. Read more
Source§

fn open_stream(&self, oid: &ObjectId) -> Result<Option<ObjectStream<'_>>>

Open a stream over the object’s uncompressed payload. Read more
Source§

fn for_each_object( &self, f: &mut dyn FnMut(&ObjectId) -> ControlFlow<()>, ) -> Result<()>

Invoke f for every object id in this store until f returns ControlFlow::Break. Read more
Source§

fn lookup_prefix( &self, prefix: &str, limit: usize, out: &mut Vec<ObjectId>, ) -> Result<()>

Fill out with object ids whose hex form starts with prefix (case-insensitive). Read more
Source§

fn refresh(&self) -> Result<bool>

Reload indexes or caches after on-disk changes (packs, alternates, MIDX). Read more

Auto Trait Implementations§

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> Same for T

Source§

type Output = T

Should always be Self
Source§

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

Source§

type Error = !

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

fn try_from(value: U) -> Result<T, !>

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.