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
TypedCollectionis 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::Requestsource§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.