Trait AsyncSeek
trait AsyncSeek
Seek bytes asynchronously.
This trait is analogous to the std::io::Seek trait, but integrates
with the asynchronous task system. In particular, the start_seek
method, unlike Seek::seek, will not block the calling thread.
Utilities for working with AsyncSeek values are provided by
AsyncSeekExt.
Required Methods
fn start_seek(self: Pin<&mut Self>, position: SeekFrom) -> Result<()>Attempts to seek to an offset, in bytes, in a stream.
A seek beyond the end of a stream is allowed, but behavior is defined by the implementation.
If this function returns successfully, then the job has been submitted. To find out when it completes, call
poll_complete.Errors
This function can return
io::ErrorKind::Otherin case there is another seek in progress. To avoid this, it is advisable that any call tostart_seekis preceded by a call topoll_completeto ensure all pending seeks have completed.fn poll_complete(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll<Result<u64>>Waits for a seek operation to complete.
If the seek operation completed successfully, this method returns the new position from the start of the stream. That position can be used later with
SeekFrom::Start.The position returned by calling this method can only be relied on right after
start_seek. If you have changed the position by e.g. reading or writing since callingstart_seek, then it is unspecified whether the returned position takes that position change into account. Similarly, ifstart_seekhas never been called, then it is unspecified whetherpoll_completereturns the actual position or some other placeholder value (such as 0).Errors
Seeking to a negative offset is considered an error.
Implementors
impl<T: AsRef<[u8]> + Unpin> AsyncSeek for Cursor<T>impl AsyncSeek for Fileimpl<P> AsyncSeek for Pin<P>impl AsyncSeek for Emptyimpl<T: ?Sized + AsyncSeek + Unpin> AsyncSeek for &mut Timpl<W: AsyncWrite + AsyncSeek> AsyncSeek for BufWriter<W>impl<T: ?Sized + AsyncSeek + Unpin> AsyncSeek for Box<T>impl<RW: AsyncRead + AsyncWrite + AsyncSeek> AsyncSeek for BufStream<RW>impl<R: AsyncRead + AsyncSeek> AsyncSeek for BufReader<R>