pub struct GroupScopedSnapshot { /* private fields */ }Expand description
A group-scoped snapshot that only contains data for a single group.
Unlike MemoryStorageSnapshot which captures all data in the storage,
this snapshot only captures data relevant to a specific group. This enables
proper rollback isolation where rolling back Group A doesn’t affect Group B.
This matches the behavior of SQLite’s group-scoped snapshots where:
snapshot_group_state()only copies rows WHEREgroup_id = ?restore_group_from_snapshot()only deletes/restores rows for that group
§Group-Scoped Data
The following data is captured per group:
- MLS group data (tree state, join config, etc.)
- MLS own leaf nodes for this group
- MLS proposals for this group
- MLS epoch key pairs for this group
- MDK group record
- MDK group relays
- MDK group exporter secrets
The following data is NOT captured (not group-scoped):
- MLS key packages (identity-scoped, not group-scoped)
- MLS PSKs (identity-scoped, not group-scoped)
- MLS signature keys (identity-scoped, not group-scoped)
- MLS encryption keys (identity-scoped, not group-scoped)
- Messages (handled separately via
invalidate_messages_after_epoch) - Welcomes (keyed by EventId, not group-scoped)
Trait Implementations§
Source§impl Clone for GroupScopedSnapshot
impl Clone for GroupScopedSnapshot
Source§fn clone(&self) -> GroupScopedSnapshot
fn clone(&self) -> GroupScopedSnapshot
Returns a duplicate of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreAuto Trait Implementations§
impl Freeze for GroupScopedSnapshot
impl RefUnwindSafe for GroupScopedSnapshot
impl Send for GroupScopedSnapshot
impl Sync for GroupScopedSnapshot
impl Unpin for GroupScopedSnapshot
impl UnsafeUnpin for GroupScopedSnapshot
impl UnwindSafe for GroupScopedSnapshot
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
Mutably borrows from an owned value. Read more
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
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