pub struct TurnScope {
pub driver: Option<Address>,
pub read_set: Vec<Address>,
pub write_set: Vec<Address>,
pub exchange_tail_floor: Option<usize>,
}Expand description
The operation manifest for the current turn.
Fields§
§driver: Option<Address>The driver node the turn is answering, when one resolves.
read_set: Vec<Address>Addresses the turn depends on (input).
write_set: Vec<Address>Addresses the turn will mutate (output).
exchange_tail_floor: Option<usize>Exchange node-index floor for the turn’s active tail
(#loop-guard-exchange-node-granularity). The exchange component is
whole-component in read_set/write_set, but only its tail — nodes at
or after this index (the active turn’s appends and edits) — affects the
turn. An edit to an OLD exchange block (index below the floor) is
Independent and must not preempt the auto-loop drain. None keeps the
coarse whole-component behavior (no exchange nodes / unknown tail).
Implementations§
Source§impl TurnScope
impl TurnScope
Sourcepub fn for_driver(driver: Option<Address>) -> Self
pub fn for_driver(driver: Option<Address>) -> Self
Build the canonical turn scope for an optional driver queue node, with no exchange-tail narrowing (whole-component exchange affectedness).
Sourcepub fn for_driver_with_exchange_tail(
driver: Option<Address>,
exchange_tail_floor: Option<usize>,
) -> Self
pub fn for_driver_with_exchange_tail( driver: Option<Address>, exchange_tail_floor: Option<usize>, ) -> Self
Build the canonical turn scope for an optional driver queue node, narrowing
the exchange component to its active tail at exchange_tail_floor.
read_set = {driver, exchange tail}; write_set = the managed output
components plus the driver strike. Addresses are deduped while preserving
first-seen order so the manifest is stable. exchange_tail_floor is the
count of exchange nodes present at turn start: a later op at an index at
or above it is a tail append/edit (affects the turn); an op below it edits
committed history and is independent.
Trait Implementations§
Source§impl<'de> Deserialize<'de> for TurnScope
impl<'de> Deserialize<'de> for TurnScope
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
impl Eq for TurnScope
impl StructuralPartialEq for TurnScope
Auto Trait Implementations§
impl Forget for TurnScope
impl Freeze for TurnScope
impl RefUnwindSafe for TurnScope
impl Send for TurnScope
impl Sync for TurnScope
impl Unpin for TurnScope
impl UnsafeUnpin for TurnScope
impl UnwindSafe for TurnScope
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,
impl<T> DeserializeOwned for Twhere
T: for<'de> Deserialize<'de>,
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
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.