NAME
Data::Stream - capability based stream model
CAPABILITIES
Common: (Next Reset Peek First Exhausted)
Next:
$stream->next
Reset:
$stream->reset
Peek: (Next)
$stream->peek # defaulted
First: (Reset, Next)
$stream->first # defaulted
Exhausted:
$stream->exhausted
Exhausted::Peek: (Exhausted)
$sream->exhausted # defaulted
Ready: (Next)
$stream->ready
$stream->next_if_ready # defaulted
MultiNext: (Next)
$stream->next(Int $how_many); # defaulted
DISCUSSION AREAS
Can we consider certain things universal? Should peek always be permitted even though it can potentially retain a reference to a large/contended resource?
What are sensible capabilities for e.g. a socket stream?
Seeking, skipping ...
Composition of potentially inefficient defaults?
MultiNext may interfere with simple wrappers for next - can we deal with that somehow? (multi+around?)