pub struct BlobStore { /* private fields */ }Expand description
Content-addressed store rooted under {storage_root}/wellfair/blobs.
Implementations§
Source§impl BlobStore
impl BlobStore
pub fn open(storage_root: impl AsRef<Path>) -> Result<Self>
Sourcepub fn put(&self, bytes: &[u8]) -> Result<String>
pub fn put(&self, bytes: &[u8]) -> Result<String>
Store bytes, returning their content hash. Idempotent: re-storing identical bytes is a no-op that returns the same hash. Written via a temp file + rename so a reader never sees a partial blob.
Sourcepub fn get(&self, hash_hex: &str) -> Result<Option<Vec<u8>>>
pub fn get(&self, hash_hex: &str) -> Result<Option<Vec<u8>>>
Read a blob by content hash, verifying integrity. Returns Ok(None) if absent, and an
error if the stored bytes no longer hash to the requested handle (corruption/tamper).
pub fn exists(&self, hash_hex: &str) -> bool
Auto Trait Implementations§
impl Freeze for BlobStore
impl RefUnwindSafe for BlobStore
impl Send for BlobStore
impl Sync for BlobStore
impl Unpin for BlobStore
impl UnsafeUnpin for BlobStore
impl UnwindSafe for BlobStore
Blanket Implementations§
§impl<S, A> Aggregate<Result<S, Error>> for Awhere
A: Aggregate<S>,
impl<S, A> Aggregate<Result<S, Error>> for Awhere
A: Aggregate<S>,
Aggregate shares in an MPC protocol.
§impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
§impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more