DVUI

reorderSlice

Parameters

#
T:type
type
slice:[]T
[]T
removed_idx:usize
usize
insert_before_idx:usize
usize

Source

Implementation

#
pub fn reorderSlice(comptime T: type, slice: []T, removed_idx: usize, insert_before_idx: usize) void {
    const ri = removed_idx;
    const ibi = insert_before_idx;

    const removed = slice[ri];
    if (ri < ibi) {
        // moving down, shift others up
        for (ri..ibi - 1) |i| {
            slice[i] = slice[i + 1];
        }
        slice[ibi - 1] = removed;
    } else {
        // moving up, shift others down
        for (ibi..ri, 0..) |_, i| {
            slice[ri - i] = slice[ri - i - 1];
        }
        slice[ibi] = removed;
    }
}