Three streaming iterators ship for read_range, read_by_correlation, and walk_causation — each fetches 100 events per internal batch, releases the pool connection before yielding, and is fused so next() after None is always safe.
v1.1.52026-06-21
·RangeIter, CorrelationIter, and CausationIter implement Iterator<Item = Result<StoredEvent, Error>> + FusedIterator; constructors on Store mirror the existing bounded-read API
·Pool connection is acquired and released inside fetch_batch() before Iterator::next returns — long-running consumer loops cannot starve concurrent readers (confirmed by pool_size=1 invariant test)
·No aggregate_iter: fold semantics don't map to iteration and the restore() gap from v1.1.4 means resume isn't ready — deferred to v1.2.x with the restore() design