From Code to Community: Sponsoring The Perl and Raku Conference 2025 Learn more

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?)