pub enum PropagationDirection {
Bidirectional,
UpOnly,
DownOnly,
SystemWide,
}Expand description
Propagation direction for tombstones (ADR-034)
Controls which direction tombstones flow in the hierarchy:
- Bidirectional: Both up to parents and down to children
- UpOnly: Only to parent cells (e.g., contact_reports)
- DownOnly: Only to child cells (e.g., commands)
- SystemWide: Propagate to ALL peers (eventually consistent)
Variants§
Bidirectional
Sync bidirectionally (both up and down hierarchy)
UpOnly
Sync only upward to parent cells
DownOnly
Sync only downward to child cells
SystemWide
Sync to all peers regardless of hierarchy (eventually consistent)
Use for security-critical deletions that must reach all nodes:
- PII removal (GDPR/privacy compliance)
- Malicious content removal
- Security-revoked credentials
Implementations§
Source§impl PropagationDirection
impl PropagationDirection
Sourcepub fn default_for_collection(collection: &str) -> PropagationDirection
pub fn default_for_collection(collection: &str) -> PropagationDirection
Default propagation direction for a collection
Per ADR-034 strategy matrix:
- nodes/tracks/alerts: Bidirectional
- cells/contact_reports: Up only
- commands: Down only
Sourcepub fn allows_down(&self) -> bool
pub fn allows_down(&self) -> bool
Check if this direction allows syncing to children
Sourcepub fn is_system_wide(&self) -> bool
pub fn is_system_wide(&self) -> bool
Check if this is a system-wide propagation
Trait Implementations§
Source§impl Clone for PropagationDirection
impl Clone for PropagationDirection
Source§fn clone(&self) -> PropagationDirection
fn clone(&self) -> PropagationDirection
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 moreSource§impl Debug for PropagationDirection
impl Debug for PropagationDirection
Source§impl Default for PropagationDirection
impl Default for PropagationDirection
Source§fn default() -> PropagationDirection
fn default() -> PropagationDirection
Returns the “default value” for a type. Read more
Source§impl<'de> Deserialize<'de> for PropagationDirection
impl<'de> Deserialize<'de> for PropagationDirection
Source§fn deserialize<__D>(
__deserializer: __D,
) -> Result<PropagationDirection, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(
__deserializer: __D,
) -> Result<PropagationDirection, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
Deserialize this value from the given Serde deserializer. Read more
Source§impl Hash for PropagationDirection
impl Hash for PropagationDirection
Source§impl PartialEq for PropagationDirection
impl PartialEq for PropagationDirection
Source§impl Serialize for PropagationDirection
impl Serialize for PropagationDirection
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,
Serialize this value into the given Serde serializer. Read more
impl Copy for PropagationDirection
impl Eq for PropagationDirection
impl StructuralPartialEq for PropagationDirection
Auto Trait Implementations§
impl Freeze for PropagationDirection
impl RefUnwindSafe for PropagationDirection
impl Send for PropagationDirection
impl Sync for PropagationDirection
impl Unpin for PropagationDirection
impl UnsafeUnpin for PropagationDirection
impl UnwindSafe for PropagationDirection
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<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
Compare self to
key and return true if they are equal.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>
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