feat: add #read_greedy method
#16535
Open
+27
−0
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.
Closes #14605
Adds the proposed
#read_greedymethod which tries to fill aSlicemultiple times if it was only filled partially by the read method.Since some users seem to expect this kind of behaviour from
#read(leading to hard-to-debug bugs), this could be seen as a "safer" version of #read for some use-cases.I didn't try to add a lazy reading function as there would be too many interpretations of what reading lazily even means depending on the use-case.
There's also a small optimization for IO::Memory (not benchmarked).