# [−] [src] Trait tokio::io::AsyncSeek

    pub trait AsyncSeek {
        fn start_seek(self: Pin<&mut Self>, position: SeekFrom) -> Result<()>;
        fn poll_complete(
            self: Pin<&mut Self>,
            cx: &mut Context<'_>
        ) -> Poll<Result<u64>>;
    }

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`. Repeatedly calling this function without calling `start_seek` might return the same result.

# Errors

Seeking to a negative offset is considered an error.

Loading content...

## Implementations on Foreign Types

### `impl<T: ?Sized + AsyncSeek + Unpin> AsyncSeek for Box<T>` [src]

#### `fn start_seek(self: Pin<&mut Self>, pos: SeekFrom) -> Result<()>` [src]

#### `fn poll_complete(
self: Pin<&mut Self>,
cx: &mut Context<'_>
) -> Poll<Result<u64>>` [src]

### `impl<T: ?Sized + AsyncSeek + Unpin, '_> AsyncSeek for &'_ mut T` [src]

#### `fn start_seek(self: Pin<&mut Self>, pos: SeekFrom) -> Result<()>` [src]

#### `fn poll_complete(
self: Pin<&mut Self>,
cx: &mut Context<'_>
) -> Poll<Result<u64>>` [src]

### `impl<P> AsyncSeek for Pin<P> where
P: DerefMut + Unpin,
P::Target: AsyncSeek,` [src]

#### `fn start_seek(self: Pin<&mut Self>, pos: SeekFrom) -> Result<()>` [src]

#### `fn poll_complete(
self: Pin<&mut Self>,
cx: &mut Context<'_>
) -> Poll<Result<u64>>` [src]

### `impl<T: AsRef<[u8]> + Unpin> AsyncSeek for Cursor<T>` [src]

#### `fn start_seek(self: Pin<&mut Self>, pos: SeekFrom) -> Result<()>` [src]

#### `fn poll_complete(self: Pin<&mut Self>, _: &mut Context<'_>) -> Poll<Result<u64>>` [src]

Loading content...

## Implementors

Loading content...