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.
Motivation
We want to have a trait for seeking, since there's more than one object you might want to seek. This PR implements it for
File
andCursor
, and there are clients with their own seekable objects.This is a tweaked version of #1641, with the code changed to use two functions instead of one, as requested in #1641 (comment).
Solution
The purpose behind using two functions is, essentially, to make the interface less fragile. If
start_seek
returns Pending, then that means nothing has happened yet. Otherwise, it has. This rule, that Pending means no side effects, is a common convention throughout Tokio's low-level API.The function that retrieves the result,
poll_complete
, is the same way.cc #1256
Closes #776
Related: rust-lang/futures-rs#1553