1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
|
#![allow(clippy::assertions_on_constants)]
#![allow(clippy::eq_op)]
#![warn(clippy::format_in_format_args)]
#![warn(clippy::to_string_in_format_args)]
use std::io::{stdout, Error, ErrorKind, Write};
use std::ops::Deref;
use std::panic::Location;
macro_rules! my_macro {
() => {
// here be dragons, do not enter (or lint)
println!("error: {}", format!("something failed at {}", Location::caller()));
};
}
macro_rules! my_other_macro {
() => {
format!("something failed at {}", Location::caller())
};
}
fn main() {
let error = Error::new(ErrorKind::Other, "bad thing");
let x = 'x';
println!("error: {}", format!("something failed at {}", Location::caller()));
println!("{}: {}", error, format!("something failed at {}", Location::caller()));
println!("{:?}: {}", error, format!("something failed at {}", Location::caller()));
println!("{{}}: {}", format!("something failed at {}", Location::caller()));
println!(r#"error: "{}""#, format!("something failed at {}", Location::caller()));
println!("error: {}", format!(r#"something failed at "{}""#, Location::caller()));
println!("error: {}", format!("something failed at {} {0}", Location::caller()));
let _ = format!("error: {}", format!("something failed at {}", Location::caller()));
let _ = write!(
stdout(),
"error: {}",
format!("something failed at {}", Location::caller())
);
let _ = writeln!(
stdout(),
"error: {}",
format!("something failed at {}", Location::caller())
);
print!("error: {}", format!("something failed at {}", Location::caller()));
eprint!("error: {}", format!("something failed at {}", Location::caller()));
eprintln!("error: {}", format!("something failed at {}", Location::caller()));
let _ = format_args!("error: {}", format!("something failed at {}", Location::caller()));
assert!(true, "error: {}", format!("something failed at {}", Location::caller()));
assert_eq!(0, 0, "error: {}", format!("something failed at {}", Location::caller()));
assert_ne!(0, 0, "error: {}", format!("something failed at {}", Location::caller()));
panic!("error: {}", format!("something failed at {}", Location::caller()));
// negative tests
println!("error: {}", format_args!("something failed at {}", Location::caller()));
println!("error: {:>70}", format!("something failed at {}", Location::caller()));
println!("error: {} {0}", format!("something failed at {}", Location::caller()));
println!("{} and again {0}", format!("hi {}", x));
my_macro!();
println!("error: {}", my_other_macro!());
}
|