Struct mz_stash::TypedCollection
source · pub struct TypedCollection<K, V> { /* private fields */ }
Expand description
A helper struct to prevent mistyping of a StashCollection
’s name and
k,v types.
Implementations§
source§impl<K, V> TypedCollection<K, V>
impl<K, V> TypedCollection<K, V>
sourcepub async fn migrate_to<K2, V2>(
&self,
tx: &Transaction<'_>,
f: impl for<'a> FnOnce(&'a BTreeMap<K, V>) -> Vec<MigrationAction<K, K2, V2>>
) -> Result<(), StashError>
pub async fn migrate_to<K2, V2>( &self, tx: &Transaction<'_>, f: impl for<'a> FnOnce(&'a BTreeMap<K, V>) -> Vec<MigrationAction<K, K2, V2>> ) -> Result<(), StashError>
Provided a closure, will migrate a TypedCollection
of types K
and V
to types K2
and V2
.
sourcepub async fn initialize(
&self,
tx: &Transaction<'_>,
values: impl IntoIterator<Item = (K, V)>
) -> Result<(), StashError>
pub async fn initialize( &self, tx: &Transaction<'_>, values: impl IntoIterator<Item = (K, V)> ) -> Result<(), StashError>
Initializes a TypedCollection
with the values provided in values
.
§Panics
- If the
TypedCollection
is not empty.
source§impl<K, V> TypedCollection<K, V>
impl<K, V> TypedCollection<K, V>
sourcepub const fn new(name: &'static str) -> Self
pub const fn new(name: &'static str) -> Self
Creates a new TypedCollection
with name
.
sourcepub const fn name(&self) -> &'static str
pub const fn name(&self) -> &'static str
Returns the name of this TypedCollection
.
source§impl<K, V> TypedCollection<K, V>
impl<K, V> TypedCollection<K, V>
sourcepub async fn from_tx(
&self,
tx: &Transaction<'_>
) -> Result<StashCollection<K, V>, StashError>
pub async fn from_tx( &self, tx: &Transaction<'_> ) -> Result<StashCollection<K, V>, StashError>
Returns a StashCollection
corresponding to this TypedCollection
.
sourcepub async fn iter(
&self,
stash: &mut Stash
) -> Result<Vec<((K, V), Timestamp, Diff)>, StashError>
pub async fn iter( &self, stash: &mut Stash ) -> Result<Vec<((K, V), Timestamp, Diff)>, StashError>
Returns all ((key, value), timestamp, diff) tuples in this TypedCollection
.
sourcepub async fn peek_one(
&self,
stash: &mut Stash
) -> Result<BTreeMap<K, V>, StashError>
pub async fn peek_one( &self, stash: &mut Stash ) -> Result<BTreeMap<K, V>, StashError>
Returns all key, value pairs in this TypedCollection
.
sourcepub async fn peek_key_one(
&self,
stash: &mut Stash,
key: K
) -> Result<Option<V>, StashError>where
K: 'static,
pub async fn peek_key_one(
&self,
stash: &mut Stash,
key: K
) -> Result<Option<V>, StashError>where
K: 'static,
Returns the value of key
in this TypedCollection
.
sourcepub async fn insert_key_without_overwrite(
&self,
stash: &mut Stash,
key: K,
value: V
) -> Result<V, StashError>where
K: 'static,
V: Clone + 'static,
pub async fn insert_key_without_overwrite(
&self,
stash: &mut Stash,
key: K,
value: V
) -> Result<V, StashError>where
K: 'static,
V: Clone + 'static,
Sets the given k,v pair, if not already set.
Returns the new value stored in stash after this operations.
sourcepub async fn insert_without_overwrite<I>(
&self,
stash: &mut Stash,
entries: I
) -> Result<BTreeMap<K, V>, StashError>
pub async fn insert_without_overwrite<I>( &self, stash: &mut Stash, entries: I ) -> Result<BTreeMap<K, V>, StashError>
Sets the given key value pairs, if not already set. If a new key appears
multiple times in entries
, its value will be from the first occurrence
in entries
.
Returns the new state of the collection after this operation.
sourcepub async fn upsert_key<F, R>(
&self,
stash: &mut Stash,
key: K,
f: F
) -> Result<Result<(Option<V>, V), R>, StashError>
pub async fn upsert_key<F, R>( &self, stash: &mut Stash, key: K, f: F ) -> Result<Result<(Option<V>, V), R>, StashError>
Sets a value for a key to the result of f
. f
is passed the
previous value, if any.
Returns the previous value if one existed and the value returned from
f
.
sourcepub async fn upsert<I>(
&self,
stash: &mut Stash,
entries: I
) -> Result<(), StashError>where
I: IntoIterator<Item = (K, V)>,
K: 'static,
V: 'static,
pub async fn upsert<I>(
&self,
stash: &mut Stash,
entries: I
) -> Result<(), StashError>where
I: IntoIterator<Item = (K, V)>,
K: 'static,
V: 'static,
Sets the given key value pairs, removing existing entries match any key.
sourcepub async fn delete_keys(
&self,
stash: &mut Stash,
keys: BTreeSet<K>
) -> Result<(), StashError>
pub async fn delete_keys( &self, stash: &mut Stash, keys: BTreeSet<K> ) -> Result<(), StashError>
Transactionally deletes any kv pair from self
whose key is in keys
.
Note that:
- Unlike
delete
, this operation operates in time O(keys), and not O(set), however does so by parallelizing a number of point queries so is likely not performant for more than 10-or-so keys. - This operation runs in a single transaction and cannot be combined with other transactions.
Auto Trait Implementations§
impl<K, V> RefUnwindSafe for TypedCollection<K, V>where
K: RefUnwindSafe,
V: RefUnwindSafe,
impl<K, V> Send for TypedCollection<K, V>
impl<K, V> Sync for TypedCollection<K, V>
impl<K, V> Unpin for TypedCollection<K, V>
impl<K, V> UnwindSafe for TypedCollection<K, V>where
K: UnwindSafe,
V: 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> FutureExt for T
impl<T> FutureExt for T
source§fn with_context(self, otel_cx: Context) -> WithContext<Self>
fn with_context(self, otel_cx: Context) -> WithContext<Self>
source§fn with_current_context(self) -> WithContext<Self>
fn with_current_context(self) -> WithContext<Self>
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> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T
in a tonic::Request
source§impl<T> Pointable for T
impl<T> Pointable for T
source§impl<P, R> ProtoType<R> for Pwhere
R: RustType<P>,
impl<P, R> ProtoType<R> for Pwhere
R: RustType<P>,
source§fn into_rust(self) -> Result<R, TryFromProtoError>
fn into_rust(self) -> Result<R, TryFromProtoError>
RustType::from_proto
.source§fn from_rust(rust: &R) -> P
fn from_rust(rust: &R) -> P
RustType::into_proto
.