| Consumer | Rule |
|---|---|
| Pipe, comma, select, object fields | Advance one branch or output at a time |
| and, or, any, all | Stop branches according to boolean semantics |
| first, limit, nth | Stop at the specified output count |
| last | Consume all results while retaining one value |
| Arrays, map, sort/group keys | Explicitly collect the required results |
| reduce | Consume each update stream; retain its last accumulator |
| foreach | Retain each accumulator and run extraction for every update |
| |= | Take the first update; delete on an empty update |
impl Show for CompileError