refactor: Relax bounds on Writer::{sink, copy} #3027
Merged
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 adjusts the trait bounds on the input stream (for
sink
) or reader (forcopy
) for theopendal::Writer
type to be less strict, and thus allow more types to be passed in.In particular, the current implementations of these functions do not use any of the additional "information"/requirements that
Send + Sync + Unpin + 'static
imply. The'static
bound is particularly restrictive, as it stops one being able to pass in any borrowed data, such as a&mut dyn AsyncRead
object or similar. Without these bounds, one can pass in more readers or more streams, more simply.There is a downside to this change: if these implementations wanted to change in future to use any of these (e.g. a threaded implementation of
copy
or something), that becomes a breaking change. I would suggest that's okay: any fancy implementation like that would be best offered in addition to these simple ones, exactly because they'll need to impose additional restrictions on their input types.(Thank you for OpenDAL!)