pub fn discard_exact(avail: usize, len: usize) -> Result { let mut avail = avail; let mut len = len; let mut rounds = 0usize; let mut eof = false; while len > 0 && !eof { let consume_len = if avail < len { avail } else { len }; if consume_len == 0 { eof = true; } else { avail -= consume_len; len -= consume_len; rounds += 1; } } if eof { Err(1) } else { Ok(rounds) } }