Change Decoder to a BufRead API#205
Open
bushrat011899 wants to merge 5 commits into
Open
Conversation
- Added `DecodeOptions::read_info_buffered` - Added `Decoder::new_buffered` - Updated documentation
Contributor
Author
|
See this comment regarding the CI failure. |
Contributor
Author
|
See #206 for CI failure cause and possible fix. |
fintelia
reviewed
May 15, 2025
Contributor
fintelia
left a comment
There was a problem hiding this comment.
I think this is reasonable. The image crate already requires the BufRead bound to decode GIFs in preparation for the possibility that we'd want to make this change.
(There was a slight oversight where GifDecoder::new doesn't require the bound, but calling any methods on the resulting decoder does. Technically that means it would be a breaking change to switch it, but given the limited expected impact, it might be fine to do without a major version bump)
BufRead API to decoderDecoder to a BufRead API
Contributor
|
Related discussion: |
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.
Objective
Decodercurrently wraps any provided readerRinstd::io::BufReader, as the decoding process is designed around buffered reads usingstd::io::BufRead. This can lead to double-buffering issues if the provided readerRalready implementsstd::io::BufReadon its own, leading to possibly lost performance.Solution
Decoder<R: Read>intoDecoder<R: BufRead>. This is a breaking change users may need to accommodate by replacingDecoder<...>withDecoder<std::io::BufReader<...>>in type signatures.DecodeOptions::read_infoto accept anR: BufRead. For migration, you may need to wrap theRparameter instd::io::BufReader::new(...).Decoder::newto accept anR: BufRead. For migration, you may need to wrap theRparameter instd::io::BufReader::new(...).