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::Other in case there is another seek in progress. To avoid this, it is advisable that any call to start_seek is preceded by a call to poll_complete to 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 calling start_seek, then it is unspecified whether the returned position takes that position change into account. Similarly, if start_seek has never been called, then it is unspecified whether poll_complete returns the actual position or some other placeholder value (such as 0).

Errors

Seeking to a negative offset is considered an error.

Implementors