Rindle docs and package mapSkip to main content

Skip

Struct Skip 

Source
pub struct Skip {
    pub input: NodeId,
    pub bound: Start,
    pub output: Cell<Option<OutEdge>>,
}
Expand description

Skip: a stateless, ordered operator that drops rows up to bound (the AST start). Stateless ⇒ no StorageId.

Fields§

§input: NodeId

Upstream input operator (always the source connection in the built subset — start is lowered right after the source, mirroring buildPipelineInternal).

§bound: Start

The start bound: rows at/after it survive, per its Start::basis (Basis::At includes the bound row, Basis::After excludes it). The builder lowers the AST start (a name-keyed partial row + exclusive) to this positional Start; the comparator only reads the sort columns.

§output: Cell<Option<OutEdge>>

The single downstream edge as a port-carrying OutEdge (like a Join’s): Port::Single to a terminal sink, or Port::JoinParent when this Skip feeds the parent port of a relationship join stacked above it. Wired two-phase via Graph::set_output (Single) or Graph::set_out_edge (explicit port).

Implementations§

Source§

impl Skip

Source

pub fn new(input: NodeId, bound: Start) -> Skip

Source

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

Lazy pull (skip.ts:53): merge the bound into the input start and fetch. Forward scans pass the input through (the source’s start gate did the work); reverse scans additionally take_while rows that are still at/after the bound, stopping at the first that falls below it.

Source

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

Eager push (skip.ts:88): forward Add/Remove/Child iff their row is at/after the bound; split an Edit that crosses the bound into Remove(old)/Add(new) (maybe-split-and-push-edit-change.ts). Forwards on the edge’s own port so a Skip can feed a relationship join’s parent port.

Auto Trait Implementations§

§

impl !Freeze for Skip

§

impl !RefUnwindSafe for Skip

§

impl Send for Skip

§

impl !Sync for Skip

§

impl Unpin for Skip

§

impl UnsafeUnpin for Skip

§

impl UnwindSafe for Skip

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.