io: make Seek and Copy private (#2935)

Refs: #2928
This commit is contained in:
Taiki Endo
2020-10-09 08:33:14 -07:00
committed by GitHub
parent 60d81bbe10
commit 41ac1ae2bc
3 changed files with 18 additions and 35 deletions
+1 -2
View File
@@ -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,
};
}
+16 -32
View File
@@ -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>>();
}
}
+1 -1
View File
@@ -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};