The mutable snapshot needs these methods only (no trait implementations):
- pub fn new() -> Arc<Self>
- pub fn snapshot_id(&self) -> SnapshotId
- pub fn invalid() -> SnapshotIdSet
- pub fn root_mutable(&self) -> Arc<Self>
- pub fn enter<T>() -> T
- pub fn take_nested_snapshot() -> AnySnapshot
- pub fn take_nested_mutable_snapshot() -> AnySnapshot
- pub fn has_pending_changes() -> bool
- pub fn dispose()
- pub fn record_read()
- pub fn record_write()
- pub fn apply() -> SnapshotApplyResult
- pub fn is_disposed() -> bool