summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTaiki Endo <te316e89@gmail.com>2020-10-10 00:33:14 +0900
committerGitHub <noreply@github.com>2020-10-09 08:33:14 -0700
commit41ac1ae2bc9b2e4b6d03205bde19a4bbc20b368d (patch)
treee86683b908dfa04d748db7310afc2e5b6922dadf
parent60d81bbe10faf344ea18438a1c5ecb9173e6ec52 (diff)
io: make Seek and Copy private (#2935)
Refs: #2928
-rw-r--r--tokio/src/io/mod.rs3
-rw-r--r--tokio/src/io/util/copy.rs48
-rw-r--r--tokio/src/io/util/mod.rs2
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<u64>
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::<Copy<'_, PhantomPinned, PhantomPinned>>();
- }
-}
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};