def table.trim.go
bend-kit-http2@0.4.0.0 · hpack.bend:267
import bend-kit-http2@0.4.0.0/hpack.bend as Hpack
import Base
267def table.trim.go(xs: List<&2, Field>, +room: U32, keep: Bool, +acc: List<&2, Field>, +used: U32) -> List<&2, Field> & U32:
268 match xs keep:
269 case Nil{} _:
270 (List.reverse(&2, Field, acc), used)
271 case Con{field, tail} False{}:
272 (List.reverse(&2, Field, acc), used)
273 case Con{+field, tail} True{}:
274 +cost = field.size(field)
275 +fits = U32.is_le(cost, room)
276 table.trim.go(tail, Bool.pick(U32, fits, (room - cost : U32), 0), fits,
277 Bool.pick(List<&2, Field>, fits, Con{field, acc}, acc),
278 Bool.pick(U32, fits, (used + cost : U32), used))