pub enum NoticeChanges {
Detailed {
entries: Vec<ChangeEnvelope>,
},
Ids {
entries: Vec<ChangeEnvelope>,
},
Counts {
counts: BTreeMap<String, usize>,
by_change: NoticeByChange,
self_inform: String,
},
}Expand description
The size-graceful body of a MemChangedNotice. Internally
tagged on mode so a caller decodes one stable shape and branches
on the discriminator — no request-shape-dependent polymorphism.
The detailed and ids tiers carry ChangeEnvelopes — the exact
per-entity shape memstead_changes_since emits (same action
vocabulary, from_id / to_id on renames). Sharing the type is the
point: an agent that follows the notice’s self_inform to
memstead_changes_since decodes one shape on both surfaces, and the two
delta representations cannot drift apart in vocabulary or richness.
Variants§
Detailed
Small delta — full per-entity ChangeEnvelopes with title /
entity_type enrichment.
Fields
entries: Vec<ChangeEnvelope>Ids
Medium delta — every changed entity inline as a ChangeEnvelope
with title / entity_type stripped. The id list (and a
rename’s from_id / to_id) stays complete; only rich detail is
dropped once the delta exceeds [NOTICE_DETAILED_MAX].
Fields
entries: Vec<ChangeEnvelope>Counts
Mass change — counts by type and by change-kind, plus the
memstead_changes_since(since=<from_head>) instruction for the
full delta. counts keys are entity types (omitted for
envelopes whose type the store couldn’t resolve, e.g. removed).
Trait Implementations§
Source§impl Clone for NoticeChanges
impl Clone for NoticeChanges
Source§fn clone(&self) -> NoticeChanges
fn clone(&self) -> NoticeChanges
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for NoticeChanges
impl Debug for NoticeChanges
impl Eq for NoticeChanges
Source§impl PartialEq for NoticeChanges
impl PartialEq for NoticeChanges
Source§impl Serialize for NoticeChanges
impl Serialize for NoticeChanges
Source§fn serialize<__S>(
&self,
__serializer: __S,
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>where
__S: Serializer,
fn serialize<__S>(
&self,
__serializer: __S,
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>where
__S: Serializer,
impl StructuralPartialEq for NoticeChanges
Auto Trait Implementations§
impl Freeze for NoticeChanges
impl RefUnwindSafe for NoticeChanges
impl Send for NoticeChanges
impl Sync for NoticeChanges
impl Unpin for NoticeChanges
impl UnsafeUnpin for NoticeChanges
impl UnwindSafe for NoticeChanges
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> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>, which can then be
downcast into Box<dyn ConcreteType> where ConcreteType implements Trait.Source§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait> (where Trait: Downcast) to Rc<Any>, which can then be further
downcast into Rc<ConcreteType> where ConcreteType implements Trait.Source§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.Source§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.Source§impl<T> DowncastSend for T
impl<T> DowncastSend for T
Source§impl<T> DowncastSync for T
impl<T> DowncastSync for T
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
impl<T> Fruit for 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