-
Notifications
You must be signed in to change notification settings - Fork 0
Description
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, theninitial_stream_len
should be set toNone
. - if the inner reader implements
std::io::Read
andstd::io::Seek
, theninitial_stream_len
should be set toSome(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(..)
).