// run-rustfix #![allow(unused_imports)] #![warn(clippy::explicit_write)] fn stdout() -> String { String::new() } fn stderr() -> String { String::new() } fn main() { // these should warn { use std::io::Write; print!("test"); eprint!("test"); println!("test"); eprintln!("test"); print!("test"); eprint!("test"); // including newlines println!("test\ntest"); eprintln!("test\ntest"); } // these should not warn, different destination { use std::fmt::Write; let mut s = String::new(); write!(s, "test").unwrap(); write!(s, "test").unwrap(); writeln!(s, "test").unwrap(); writeln!(s, "test").unwrap(); s.write_fmt(format_args!("test")).unwrap(); s.write_fmt(format_args!("test")).unwrap(); write!(stdout(), "test").unwrap(); write!(stderr(), "test").unwrap(); writeln!(stdout(), "test").unwrap(); writeln!(stderr(), "test").unwrap(); stdout().write_fmt(format_args!("test")).unwrap(); stderr().write_fmt(format_args!("test")).unwrap(); } // these should not warn, no unwrap { use std::io::Write; std::io::stdout().write_fmt(format_args!("test")).expect("no stdout"); std::io::stderr().write_fmt(format_args!("test")).expect("no stderr"); } }