Spec-Zone.ru › Tokio

Трейт AsyncSeekExt

pub trait AsyncSeekExt: AsyncSeek {
    // Provided methods
    fn seek(&mut self, pos: SeekFrom) -> Seek<'_, Self>
       where Self: Unpin { ... }
    fn rewind(&mut self) -> Seek<'_, Self>
       where Self: Unpin { ... }
    fn stream_position(&mut self) -> Seek<'_, Self>
       where Self: Unpin { ... }
}
Доступно только при включённой функциональности крейта io-util.

Трейт-расширение, добавляющий вспомогательные методы к типам AsyncSeek.

Примеры

use std::io::{self, Cursor, SeekFrom};
use tokio::io::{AsyncSeekExt, AsyncReadExt};

let mut cursor = Cursor::new(b"abcdefg");

// the `seek` method is defined by this trait
cursor.seek(SeekFrom::Start(3)).await?;

let mut buf = [0; 1];
let n = cursor.read(&mut buf).await?;
assert_eq!(n, 1);
assert_eq!(buf, [b'd']);

Ok(())

Подробнее см. документацию модуля.

Предоставляемые методы

fn seek(&mut self, pos: SeekFrom) -> Seek<'_, Self>
where Self: Unpin,

Создаёт future, который выполнит перемещение позиции (seek) в объекте ввода-вывода, а затем вернёт новую позицию в объекте и сам объект.

Эквивалентно:

ⓘ
async fn seek(&mut self, pos: SeekFrom) -> io::Result<u64>;

В случае ошибки буфер и объект будут отброшены, а ошибка будет возвращена.

Примеры
use tokio::fs::File;
use tokio::io::{AsyncSeekExt, AsyncReadExt};

use std::io::SeekFrom;

let mut file = File::open("foo.txt").await?;
file.seek(SeekFrom::Start(6)).await?;

let mut contents = vec![0u8; 10];
file.read_exact(&mut contents).await?;

fn rewind(&mut self) -> Seek<'_, Self>
where Self: Unpin,

Создаёт future, который выполнит возврат (rewind) к началу потока.

Это вспомогательный метод, эквивалентный self.seek(SeekFrom::Start(0)).

fn stream_position(&mut self) -> Seek<'_, Self>
where Self: Unpin,

Создаёт future, который возвращает текущую позицию смещения от начала потока.

Это эквивалентно self.seek(SeekFrom::Current(0)).

Dyn-совместимость

Этот трейт не является dyn-совместимым.

В более старых версиях Rust dyn-совместимость называлась «безопасностью объектов» (object safety).

Реализации

impl<S: AsyncSeek + ?Sized> AsyncSeekExt for S

MIT License
Copyright © Tokio Contributors
https://docs.rs/tokio/1.53.1/tokio/io/trait.AsyncSeekExt.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API