let fast_remove t e = let j = ref 0 in while (!j < t.sz && not (t.data.(!j) == e)) do incr j done; assert (!j < t.sz); t.data.(!j) <- last t; pop t