An input range with movable elements.
An input range with elements that elements from src can be moved into.
The leftover portions of the two ranges after one or the other of the ranges have been exhausted.
int[5] a = [ 1, 2, 3, 4, 5 ]; int[3] b; assert(moveSome(a[], b[])[0] is a[3 .. $]); assert(a[0 .. 3] == b); assert(a == [ 1, 2, 3, 4, 5 ]);
Calls move(a, b) for each element a in src and the corresponding element b in tgt, in increasing order, stopping when either range has been exhausted.