error: use of `write!(stdout(), ...).unwrap()`
  --> tests/ui/explicit_write.rs:21:9
   |
LL |         write!(std::io::stdout(), "test").unwrap();
   |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `print!("test")`
   |
   = note: `-D clippy::explicit-write` implied by `-D warnings`
   = help: to override `-D warnings` add `#[allow(clippy::explicit_write)]`

error: use of `write!(stderr(), ...).unwrap()`
  --> tests/ui/explicit_write.rs:23:9
   |
LL |         write!(std::io::stderr(), "test").unwrap();
   |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `eprint!("test")`

error: use of `writeln!(stdout(), ...).unwrap()`
  --> tests/ui/explicit_write.rs:25:9
   |
LL |         writeln!(std::io::stdout(), "test").unwrap();
   |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `println!("test")`

error: use of `writeln!(stderr(), ...).unwrap()`
  --> tests/ui/explicit_write.rs:27:9
   |
LL |         writeln!(std::io::stderr(), "test").unwrap();
   |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `eprintln!("test")`

error: use of `stdout().write_fmt(...).unwrap()`
  --> tests/ui/explicit_write.rs:29:9
   |
LL |         std::io::stdout().write_fmt(format_args!("test")).unwrap();
   |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `print!("test")`

error: use of `stderr().write_fmt(...).unwrap()`
  --> tests/ui/explicit_write.rs:31:9
   |
LL |         std::io::stderr().write_fmt(format_args!("test")).unwrap();
   |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `eprint!("test")`

error: use of `writeln!(stdout(), ...).unwrap()`
  --> tests/ui/explicit_write.rs:35:9
   |
LL |         writeln!(std::io::stdout(), "test\ntest").unwrap();
   |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `println!("test\ntest")`

error: use of `writeln!(stderr(), ...).unwrap()`
  --> tests/ui/explicit_write.rs:37:9
   |
LL |         writeln!(std::io::stderr(), "test\ntest").unwrap();
   |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `eprintln!("test\ntest")`

error: use of `writeln!(stderr(), ...).unwrap()`
  --> tests/ui/explicit_write.rs:41:9
   |
LL |         writeln!(std::io::stderr(), "with {value}").unwrap();
   |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `eprintln!("with {value}")`

error: use of `writeln!(stderr(), ...).unwrap()`
  --> tests/ui/explicit_write.rs:43:9
   |
LL |         writeln!(std::io::stderr(), "with {} {}", 2, value).unwrap();
   |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `eprintln!("with {} {}", 2, value)`

error: use of `writeln!(stderr(), ...).unwrap()`
  --> tests/ui/explicit_write.rs:45:9
   |
LL |         writeln!(std::io::stderr(), "with {value}").unwrap();
   |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `eprintln!("with {value}")`

error: use of `writeln!(stderr(), ...).unwrap()`
  --> tests/ui/explicit_write.rs:47:9
   |
LL |         writeln!(std::io::stderr(), "macro arg {}", one!()).unwrap();
   |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `eprintln!("macro arg {}", one!())`

error: use of `writeln!(stderr(), ...).unwrap()`
  --> tests/ui/explicit_write.rs:50:9
   |
LL |         writeln!(std::io::stderr(), "{value:w$}", w = width).unwrap();
   |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `eprintln!("{value:w$}", w = width)`

error: aborting due to 13 previous errors

