Трейт Async Seek Ext
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