1 #![warn(clippy::read_zero_byte_vec)]
2 #![allow(clippy::unused_io_amount)]
5 use std::io::prelude::*;
8 use futures::io::{AsyncRead, AsyncReadExt};
9 use tokio::io::{AsyncRead as TokioAsyncRead, AsyncReadExt as _, AsyncWrite as TokioAsyncWrite, AsyncWriteExt as _};
11 fn test() -> io::Result<()> {
13 let mut f = File::open("foo.txt").unwrap();
16 let mut data = Vec::with_capacity(20);
17 f.read_exact(&mut data).unwrap();
20 let mut data2 = Vec::with_capacity(cap);
21 f.read_exact(&mut data2)?;
24 let mut data3 = Vec::new();
25 f.read_exact(&mut data3)?;
28 let mut data4 = vec![];
29 let _ = f.read(&mut data4)?;
33 let mut data5 = Vec::new();
39 let mut data6: Vec<u8> = Default::default();
44 let mut buf = [0u8; 100];
48 let mut empty = vec![];
49 let mut data7 = vec![];
56 let mut data8 = Vec::new();
58 f.read_exact(&mut data8)?;
61 let mut data9 = vec![1, 2, 3];
62 f.read_exact(&mut data9)?;
67 async fn test_futures<R: AsyncRead + Unpin>(r: &mut R) {
69 let mut data = Vec::new();
70 r.read(&mut data).await.unwrap();
73 let mut data2 = Vec::new();
74 r.read_exact(&mut data2).await.unwrap();
77 async fn test_tokio<R: TokioAsyncRead + Unpin>(r: &mut R) {
79 let mut data = Vec::new();
80 r.read(&mut data).await.unwrap();
83 let mut data2 = Vec::new();
84 r.read_exact(&mut data2).await.unwrap();