pub struct WriteOverlay<R> { /* private fields */ }
Expand description
A wrapper around a JellyfishMerkleTree
that buffers pending writes to the
tree, and overlays the effect of those writes on the tree state for reading.
Implementations§
Source§impl<R> WriteOverlay<R>
impl<R> WriteOverlay<R>
Sourcepub const PRE_GENESIS_VERSION: Version = 18_446_744_073_709_551_615u64
pub const PRE_GENESIS_VERSION: Version = 18_446_744_073_709_551_615u64
Source§impl<R> WriteOverlay<R>where
R: TreeReader + Sync,
impl<R> WriteOverlay<R>where
R: TreeReader + Sync,
Sourcepub fn new(reader: R, version: Version) -> Self
pub fn new(reader: R, version: Version) -> Self
Constructs a new WriteOverlay
with the given reader
and version
.
All reads performed with get
will use version
when querying the
underlying backing store. The buffered writes created with put
will
be written as version + 1
, so version
should probably be the latest
version if commit
will be called.
To initialize an empty tree, use Self::PRE_GENESIS_VERSION
here.
Sourcepub async fn get(&self, key: KeyHash) -> Result<Option<OwnedValue>>
pub async fn get(&self, key: KeyHash) -> Result<Option<OwnedValue>>
Gets a value by key.
This method reflects the results of any pending writes made by put
.
Sourcepub async fn get_with_proof(
&self,
key: Vec<u8>,
) -> Result<(OwnedValue, ExistenceProof)>
pub async fn get_with_proof( &self, key: Vec<u8>, ) -> Result<(OwnedValue, ExistenceProof)>
Gets a value by key alongside an ICS23 existence proof of that value.
This method does not reflect results of any pending writes to the WriteOverlay. An error will be returned if the key exists in the WriteOverlay, or if the key does not exist in the tree.
Sourcepub fn put(&mut self, key: KeyHash, value: OwnedValue)
pub fn put(&mut self, key: KeyHash, value: OwnedValue)
Puts a key/value pair in the overlay.
Assuming it is not overwritten by a subsequent put
, the value will be
written to the tree when commit
is called.
Auto Trait Implementations§
impl<R> Freeze for WriteOverlay<R>where
R: Freeze,
impl<R> RefUnwindSafe for WriteOverlay<R>where
R: RefUnwindSafe,
impl<R> Send for WriteOverlay<R>where
R: Send,
impl<R> Sync for WriteOverlay<R>where
R: Sync,
impl<R> Unpin for WriteOverlay<R>where
R: Unpin,
impl<R> UnwindSafe for WriteOverlay<R>where
R: UnwindSafe,
Blanket Implementations§
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
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§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>
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>
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