From 41ac1ae2bc9b2e4b6d03205bde19a4bbc20b368d Mon Sep 17 00:00:00 2001 From: Taiki Endo Date: Sat, 10 Oct 2020 00:33:14 +0900 Subject: io: make Seek and Copy private (#2935) Refs: #2928 --- tokio/src/io/mod.rs | 3 +-- tokio/src/io/util/copy.rs | 48 ++++++++++++++++------------------------------- tokio/src/io/util/mod.rs | 2 +- 3 files changed, 18 insertions(+), 35 deletions(-) diff --git a/tokio/src/io/mod.rs b/tokio/src/io/mod.rs index 7eba6d14..e1a036fb 100644 --- a/tokio/src/io/mod.rs +++ b/tokio/src/io/mod.rs @@ -232,12 +232,11 @@ cfg_io_util! { pub use split::{split, ReadHalf, WriteHalf}; pub(crate) mod seek; - pub use self::seek::Seek; pub(crate) mod util; pub use util::{ copy, duplex, empty, repeat, sink, AsyncBufReadExt, AsyncReadExt, AsyncSeekExt, AsyncWriteExt, - BufReader, BufStream, BufWriter, DuplexStream, Copy, Empty, Lines, Repeat, Sink, Split, Take, + BufReader, BufStream, BufWriter, DuplexStream, Empty, Lines, Repeat, Sink, Split, Take, }; } diff --git a/tokio/src/io/util/copy.rs b/tokio/src/io/util/copy.rs index 86001ee7..c5981cf9 100644 --- a/tokio/src/io/util/copy.rs +++ b/tokio/src/io/util/copy.rs @@ -5,26 +5,21 @@ use std::io; use std::pin::Pin; use std::task::{Context, Poll}; -cfg_io_util! { - /// A future that asynchronously copies the entire contents of a reader into a - /// writer. - /// - /// This struct is generally created by calling [`copy`][copy]. Please - /// see the documentation of `copy()` for more details. - /// - /// [copy]: copy() - #[derive(Debug)] - #[must_use = "futures do nothing unless you `.await` or poll them"] - pub struct Copy<'a, R: ?Sized, W: ?Sized> { - reader: &'a mut R, - read_done: bool, - writer: &'a mut W, - pos: usize, - cap: usize, - amt: u64, - buf: Box<[u8]>, - } +/// A future that asynchronously copies the entire contents of a reader into a +/// writer. +#[derive(Debug)] +#[must_use = "futures do nothing unless you `.await` or poll them"] +struct Copy<'a, R: ?Sized, W: ?Sized> { + reader: &'a mut R, + read_done: bool, + writer: &'a mut W, + pos: usize, + cap: usize, + amt: u64, + buf: Box<[u8]>, +} +cfg_io_util! { /// Asynchronously copies the entire contents of a reader into a writer. /// /// This function returns a future that will continuously read data from @@ -58,7 +53,7 @@ cfg_io_util! { /// # Ok(()) /// # } /// ``` - pub fn copy<'a, R, W>(reader: &'a mut R, writer: &'a mut W) -> Copy<'a, R, W> + pub async fn copy<'a, R, W>(reader: &'a mut R, writer: &'a mut W) -> io::Result where R: AsyncRead + Unpin + ?Sized, W: AsyncWrite + Unpin + ?Sized, @@ -71,7 +66,7 @@ cfg_io_util! { pos: 0, cap: 0, buf: vec![0; 2048].into_boxed_slice(), - } + }.await } } @@ -124,14 +119,3 @@ where } } } - -#[cfg(test)] -mod tests { - use super::*; - - #[test] - fn assert_unpin() { - use std::marker::PhantomPinned; - crate::is_unpin::>(); - } -} diff --git a/tokio/src/io/util/mod.rs b/tokio/src/io/util/mod.rs index 52dab990..36cadb18 100644 --- a/tokio/src/io/util/mod.rs +++ b/tokio/src/io/util/mod.rs @@ -25,7 +25,7 @@ cfg_io_util! { mod chain; mod copy; - pub use copy::{copy, Copy}; + pub use copy::copy; mod empty; pub use empty::{empty, Empty}; -- cgit v1.2.3