Skip to content

Commit

Permalink
io: make Seek and Copy private (#2935)
Browse files Browse the repository at this point in the history
Refs: #2928
  • Loading branch information
taiki-e committed Oct 9, 2020
1 parent 60d81bb commit 41ac1ae
Show file tree
Hide file tree
Showing 3 changed files with 18 additions and 35 deletions.
3 changes: 1 addition & 2 deletions tokio/src/io/mod.rs
Expand Up @@ -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,
};
}

Expand Down
48 changes: 16 additions & 32 deletions tokio/src/io/util/copy.rs
Expand Up @@ -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
Expand Down Expand Up @@ -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,
Expand All @@ -71,7 +66,7 @@ cfg_io_util! {
pos: 0,
cap: 0,
buf: vec![0; 2048].into_boxed_slice(),
}
}.await
}
}

Expand Down Expand Up @@ -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>>();
}
}
2 changes: 1 addition & 1 deletion tokio/src/io/util/mod.rs
Expand Up @@ -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};
Expand Down

0 comments on commit 41ac1ae

Please sign in to comment.