std/iteration

Lazy pipelines: the two traits everything is pulled through, the stages between them, and the collectors that end one. The stage types themselves are not exported - map and filter answer an Iterate<Item>, and which type carries it is nobody's business.

The rule: a type is exported from the package when something outside it names it, and not otherwise. Queueing is (a driver reaches it); Staged and the stage types are not. On a declaration public only lets a sibling file import it, so those types stay public where they are declared and this file, with its public use lines, alone decides the package surface.

Stage is the same middle piece written once for the pull side here and the push side of std/stream (see docs/design/STREAMS.md). It lives here and not there because it is synchronous and because what it turns into what is an Accumulator - both words of this package - which also keeps the dependency one-way.

Modules

Everything