= Demand-driven filtering iterator
An <iterator> adapter that consumes underlying values only far enough to find the next value passing a predicate. Store at most one passing value in an <optional value>. With no cached value, its abstract remainder is the filtered underlying remainder; with cached $x$, it is $x$ followed by that filtered remainder.
Construction performs no read. On `hasNext` or `next`, consume rejected values until one passes or the input is exhausted. Cache the passing value immediately and stop. Repeated availability tests reuse it. Returning it clears the cache without prefetching another value. This gives a precise demand boundary even when producing source values is expensive. Availability need not terminate on an infinite input with no further passing value.
Back to article page