mirror of
https://github.com/tokio-rs/tokio.git
synced 2026-08-21 00:00:10 +02:00
io: fix doc-cfg on AsyncSeekExt (#2846)
This commit is contained in:
@@ -4,12 +4,14 @@ use std::io::{self, SeekFrom};
|
||||
use std::pin::Pin;
|
||||
use std::task::{Context, Poll};
|
||||
|
||||
/// Future for the [`seek`](crate::io::AsyncSeekExt::seek) method.
|
||||
#[derive(Debug)]
|
||||
#[must_use = "futures do nothing unless you `.await` or poll them"]
|
||||
pub struct Seek<'a, S: ?Sized> {
|
||||
seek: &'a mut S,
|
||||
pos: Option<SeekFrom>,
|
||||
cfg_io_util! {
|
||||
/// Future for the [`seek`](crate::io::AsyncSeekExt::seek) method.
|
||||
#[derive(Debug)]
|
||||
#[must_use = "futures do nothing unless you `.await` or poll them"]
|
||||
pub struct Seek<'a, S: ?Sized> {
|
||||
seek: &'a mut S,
|
||||
pos: Option<SeekFrom>,
|
||||
}
|
||||
}
|
||||
|
||||
pub(crate) fn seek<S>(seek: &mut S, pos: SeekFrom) -> Seek<'_, S>
|
||||
|
||||
@@ -2,65 +2,67 @@ use crate::io::seek::{seek, Seek};
|
||||
use crate::io::AsyncSeek;
|
||||
use std::io::SeekFrom;
|
||||
|
||||
/// An extension trait which adds utility methods to [`AsyncSeek`] types.
|
||||
///
|
||||
/// As a convenience, this trait may be imported using the [`prelude`]:
|
||||
///
|
||||
/// # Examples
|
||||
///
|
||||
/// ```
|
||||
/// use std::io::{Cursor, SeekFrom};
|
||||
/// use tokio::prelude::*;
|
||||
///
|
||||
/// #[tokio::main]
|
||||
/// async fn main() -> io::Result<()> {
|
||||
/// 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(())
|
||||
/// }
|
||||
/// ```
|
||||
///
|
||||
/// See [module][crate::io] documentation for more details.
|
||||
///
|
||||
/// [`AsyncSeek`]: AsyncSeek
|
||||
/// [`prelude`]: crate::prelude
|
||||
pub trait AsyncSeekExt: AsyncSeek {
|
||||
/// Creates a future which will seek an IO object, and then yield the
|
||||
/// new position in the object and the object itself.
|
||||
cfg_io_util! {
|
||||
/// An extension trait which adds utility methods to [`AsyncSeek`] types.
|
||||
///
|
||||
/// In the case of an error the buffer and the object will be discarded, with
|
||||
/// the error yielded.
|
||||
/// As a convenience, this trait may be imported using the [`prelude`]:
|
||||
///
|
||||
/// # Examples
|
||||
///
|
||||
/// ```no_run
|
||||
/// use tokio::fs::File;
|
||||
/// ```
|
||||
/// use std::io::{Cursor, SeekFrom};
|
||||
/// use tokio::prelude::*;
|
||||
///
|
||||
/// use std::io::SeekFrom;
|
||||
/// #[tokio::main]
|
||||
/// async fn main() -> io::Result<()> {
|
||||
/// let mut cursor = Cursor::new(b"abcdefg");
|
||||
///
|
||||
/// # async fn dox() -> std::io::Result<()> {
|
||||
/// let mut file = File::open("foo.txt").await?;
|
||||
/// file.seek(SeekFrom::Start(6)).await?;
|
||||
/// // the `seek` method is defined by this trait
|
||||
/// cursor.seek(SeekFrom::Start(3)).await?;
|
||||
///
|
||||
/// let mut contents = vec![0u8; 10];
|
||||
/// file.read_exact(&mut contents).await?;
|
||||
/// # Ok(())
|
||||
/// # }
|
||||
/// 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,
|
||||
{
|
||||
seek(self, pos)
|
||||
///
|
||||
/// See [module][crate::io] documentation for more details.
|
||||
///
|
||||
/// [`AsyncSeek`]: AsyncSeek
|
||||
/// [`prelude`]: crate::prelude
|
||||
pub trait AsyncSeekExt: AsyncSeek {
|
||||
/// Creates a future which will seek an IO object, and then yield the
|
||||
/// new position in the object and the object itself.
|
||||
///
|
||||
/// In the case of an error the buffer and the object will be discarded, with
|
||||
/// the error yielded.
|
||||
///
|
||||
/// # Examples
|
||||
///
|
||||
/// ```no_run
|
||||
/// use tokio::fs::File;
|
||||
/// use tokio::prelude::*;
|
||||
///
|
||||
/// use std::io::SeekFrom;
|
||||
///
|
||||
/// # async fn dox() -> std::io::Result<()> {
|
||||
/// 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?;
|
||||
/// # Ok(())
|
||||
/// # }
|
||||
/// ```
|
||||
fn seek(&mut self, pos: SeekFrom) -> Seek<'_, Self>
|
||||
where
|
||||
Self: Unpin,
|
||||
{
|
||||
seek(self, pos)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user