| #![warn(clippy::explicit_write)] |
| #![allow(unused_imports)] |
| #![allow(clippy::uninlined_format_args)] |
| |
| fn stdout() -> String { |
| String::new() |
| } |
| |
| fn stderr() -> String { |
| String::new() |
| } |
| |
| macro_rules! one { |
| () => { |
| 1 |
| }; |
| } |
| |
| 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"); |
| |
| let value = 1; |
| eprintln!("with {}", value); |
| eprintln!("with {} {}", 2, value); |
| eprintln!("with {value}"); |
| eprintln!("macro arg {}", one!()); |
| let width = 2; |
| eprintln!("{:w$}", value, w = width); |
| } |
| // 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"); |
| } |
| } |