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.