#![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 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: R) { // Callers of `use_read` may choose a `R` that is not buffered r.bytes(); //~^ unbuffered_bytes }