list.remove hands the removed element back: no copy, no hole.
queue.zg
# `list.remove` hands the removed element back (decided 2026-09-21): no copy, no hole.structJob{name:str.utf8}fnrun['job':Job]{std::print.useful["ran ",'job'.name,newln];}MAIN{letmut'queue':=[Job[name="a"],Job[name="b"],Job[name="c"]];run[list.remove[lend.mut'queue',pos1]];# straight into a calllet'next':=list.remove[lend.mut'queue',pos1];# or keptrun[give'next'];list.remove[lend.mut'queue',pos1];# or droppedstd::print.useful[list.length[lend'queue'],newln];}