获取Rust代码文件名、行号及位置信息
Rust提供了一组特殊的宏,可以在代码中获取文件名、行号和列号。这些宏分别是file!、line!和column!。通过在代码中插入这些宏,您可以在编译时获取有关代码位置的关键信息,从而更轻松地追踪问题。
示例代码
这段代码定义了一个名为log
的宏,该宏接受一个表达式参数$msg
,并在每次调用时打印出当前文件名、行号、列号以及传入的消息;
macro_rules! log {
($msg:expr) => {
println!("{}:{}:{} - {}", file!(), line!(), column!(),
$msg);
};
}
fn main() {
for _ in 0..10{
log!("this is a log message.");
}
log!("done");
}
程序运行结果
learn-rust-app\src\main.rs:10:9 - this is a log message. learn-rust-app\src\main.rs:10:9 - this is a log message. learn-rust-app\src\main.rs:10:9 - this is a log message. learn-rust-app\src\main.rs:10:9 - this is a log message. learn-rust-app\src\main.rs:10:9 - this is a log message. learn-rust-app\src\main.rs:10:9 - this is a log message. learn-rust-app\src\main.rs:10:9 - this is a log message. learn-rust-app\src\main.rs:10:9 - this is a log message. learn-rust-app\src\main.rs:10:9 - this is a log message. learn-rust-app\src\main.rs:10:9 - this is a log message. learn-rust-app\src\main.rs:12:5 - done