Skip to main content

drain_side

Function drain_side 

Source
fn drain_side<D, T, R>(
    head: &mut Column<(D, T, R)>,
    pos: &mut usize,
    list: &mut IntoIter<Column<(D, T, R)>>,
    result: &mut Column<(D, T, R)>,
    output: &mut Vec<Column<(D, T, R)>>,
    stash: &mut Vec<Column<(D, T, R)>>,
)
where D: Columnar + Default, for<'a> Ref<'a, D>: Copy + Ord, T: Columnar + Default + Clone + PartialOrder, for<'a> Ref<'a, T>: Copy + Ord, R: Columnar + Default + Semigroup + for<'a> Semigroup<Ref<'a, R>>, for<'a> <(D, T, R) as Columnar>::Container: Push<&'a (D, T, R)>, for<'a, 'a> <D as Columnar>::Container: Push<Ref<'a, D>> + Push<&'a D>, for<'a, 'a> <T as Columnar>::Container: Push<Ref<'a, T>> + Push<&'a T>, for<'a, 'a> <R as Columnar>::Container: Push<Ref<'a, R>> + Push<&'a R>,
Expand description

Drain remaining items from one side into result / output.

Copies the partially-consumed head into result via merge_from’s 1-input path, then appends remaining full chunks directly to output without per-element copy.