Rindle docs and package mapSkip to main content

UnionFanOut

Struct UnionFanOut 

Source
pub struct UnionFanOut {
    pub input: NodeId,
    /* private fields */
}
Expand description

UnionFanOut (union-fan-out.ts): one input, N branches, built over the source. fetch delegates to the input; push broadcasts the change to every branch (each a filter pipeline and/or a FlippedJoin) then drives the paired UnionFanIn’s collapse. Unlike the filter FanOut it operates on full nodes via side-effecting Graph::push, not the return-based filter chain_push.

Fields§

§input: NodeId

Implementations§

Source§

impl UnionFanOut

Source

pub fn new(input: NodeId) -> UnionFanOut

Source

pub fn fetch<'g>( &'g self, g: &'g Graph, req: &FetchRequest, ) -> Box<dyn Iterator<Item = Node<'g>> + 'g>

fetch delegates straight to the single input (union-fan-out.ts:43).

Source

pub fn push<'g>(&'g self, g: &'g Graph, change: Change<'g>)

push (union-fan-out.ts:27): signal the fan-in, broadcast the same change (relationships intact, any type including Child) to each branch, then drain the fan-in’s accumulation. The branches side-effect-push their outputs to the fan-in.

The broadcast preserves relationships for every change type (the materialize_change_preserving_node contract, mirroring graph.rs::fan_out_push): a non-flipped EXISTS Join sits on the spine BELOW the fan-out, so the branches’ Exists gates count their gated relationship off the broadcast change’s node. The materialize runs now, under the active source overlay (post-change membership — see source_common::gen_push), then a fresh Change<'g> is rebuilt per branch (a Change<'g> is neither Clone nor 'static).

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.