Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Change AuReader to read from Read without Seek #1

Open
karip opened this issue Apr 16, 2024 · 0 comments
Open

Change AuReader to read from Read without Seek #1

karip opened this issue Apr 16, 2024 · 0 comments

Comments

@karip
Copy link
Owner

karip commented Apr 16, 2024

Currently, creating AuReader with AuReader::new() requires the inner reader to implement std::io::Read and std::io::Seek.AuReader needs to be changed to support inner readers implementing std::io::Read only. However, it should also keep the current functionality for inner readers implementing std::io::Seek.

Therefore, this change seems to require some kind of specialization. The AuReader::new() function should behave slightly differently depending on the inner reader:

  • if the inner reader implements std::io::Read only, then initial_stream_len should be set to None.
  • if the inner reader implements std::io::Read and std::io::Seek, then initial_stream_len should be set to Some(stream_length).

Rust doesn't seem to support specialization at the moment, so it isn't possible to have two different behaviors for new().

There's private AuReader::new_read() as an example how the new() function would look like for inner readers implementing only std::io::Read, but it can't be used, because calling it for inner readers implementing std::io::Seek would give wrong results (initial_stream_len would be set to None instead of Some(..)).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant