Function peek_input_until
pub fn peek_input_until<R, O, P>(
reader: &mut R,
buffer: &mut [u8],
timeout: Option<Duration>,
predicate: P,
) -> impl Future<Output = PeekOutput<O>>Expand description
Read into buffer until predicate matches, peeking stops, or the optional
timeout expires.
This helper is intended for protocol sniffing and similar cases where a caller needs to inspect a small prefix without committing to a full parser.
Peeking stops when one of the following happens:
predicatereturnsSome(_);- the reader returns EOF;
- the reader returns an error;
- the optional timeout elapses;
- the internal read-attempt budget is exhausted.
The attempt budget is capped at max(buffer.len() / 4, 1) + 1 reads. This keeps
peeking bounded even for slow or fragmented inputs, but it also means this
function can return partial data before the buffer is full.