| #![warn(clippy::unbuffered_bytes)] |
| |
| use std::fs::File; |
| use std::io::{BufReader, Cursor, Read, Stdin, stdin}; |
| use std::net::TcpStream; |
| |
| fn main() { |
| // File is not buffered, should complain |
| let file = File::open("./bytes.txt").unwrap(); |
| file.bytes(); |
| //~^ unbuffered_bytes |
| |
| // TcpStream is not buffered, should complain |
| let tcp_stream: TcpStream = TcpStream::connect("127.0.0.1:80").unwrap(); |
| tcp_stream.bytes(); |
| //~^ unbuffered_bytes |
| |
| // BufReader<File> is buffered, should not complain |
| let file = BufReader::new(File::open("./bytes.txt").unwrap()); |
| file.bytes(); |
| |
| // Cursor is buffered, should not complain |
| let cursor = Cursor::new(Vec::new()); |
| cursor.bytes(); |
| |
| // Stdio would acquire the lock for every byte, should complain |
| let s: Stdin = stdin(); |
| s.bytes(); |
| //~^ unbuffered_bytes |
| |
| // But when locking stdin, this is fine so should not complain |
| let s: Stdin = stdin(); |
| let s = s.lock(); |
| s.bytes(); |
| } |
| |
| fn use_read<R: Read>(r: R) { |
| // Callers of `use_read` may choose a `R` that is not buffered |
| r.bytes(); |
| //~^ unbuffered_bytes |
| } |