Add and use InputSession - #716
Merged
frankmcsherry merged 4 commits intoSep 20, 2025
Merged
Conversation
frankmcsherry
commented
Sep 20, 2025
frankmcsherry
force-pushed
the
input_handles
branch
from
September 20, 2025 12:00
c1cea82 to
afe5966
Compare
frankmcsherry
force-pushed
the
input_handles
branch
from
September 20, 2025 12:08
afe5966 to
d074f20
Compare
frankmcsherry
marked this pull request as ready for review
September 20, 2025 12:09
Member
Author
|
One candidate change is to have |
Member
Author
|
Merging to move forward, but lmk in review if there are things to fix up, or if we should revert for some reason! :D |
Closed
Merged
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR re-imagines how we provide access to inputs to users, through an
InputSessionthat can (and must) enumerate all(time, data)pairs. This encourages folks to use inputs idiomatically, rather than potentially draining inputs or potentially not (with "not" being a logical error because the operator may not be scheduled again).The
InputSessionhas one method that groups all(time, data)bytimeand providesdataas an iterator over mutable container references. The migration path is pretty standard, but occasionally fiddly. Eachwhile let Some((time, data)) = input.next()loop turns in toinput.for_each(|time, data| {wheredatais one additional layer of iterator, and needs to beflat_mapd or the like. This method consumes the input session, which addresses the#[must_use]attribute.One alternative that could make the migration that much easier is to leave
for_eachas the container-at-a-time iteration that it is right now, and add aby_timeorfor_timeor something that does the grouping. I think we want to encourage the latter, and making the migration lightly disruptive in order to do so might be fine.