获取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

原创内容,如需转载,请注明出处;

本文地址: https://www.perfcode.com/p/how-to-get-line-number-filename-in-rust-code.html

分类: 计算机技术
推荐阅读:
Python filter()函数 在Python中,filter()是一个内置函数,它有两个参数:一个函数和一个可迭代对象(比如列表、元组或集合)。它会对可迭代对象中的每个元素调用给定的函数,并返回一个新的可迭代对象,其中只包含符合条件的元素。
Python pow()函数 pow() 函数是 Python 内置函数之一,用于计算一个数的幂。它接受两个参数,第一个参数为底数,第二个参数为指数,如果提供第三个参数,则表示对结果取模。
Rust中的变量、常量和可变性 Rust默认情况下变量是不可变的;注意这里不可变的变量并不是常量,有编程经验的朋友可能会觉得一头雾水,让我们继续往下看;
MySQL ANY_VALUE() 函数 ANY_VALUE()函数对于启用了ONLY_FULL_GROUP_BY模式,使用GROUP BY 进行查询时很有用;该函数用于抑制启用ONLY_FULL_GROUP_BY模式时导致的值拒绝;
Python any()函数 any()是 Python 内置函数之一,接受一个可迭代对象(例如列表、元组、集合或生成器)作为参数,如果至少有一个元素在逻辑上等价于 True,则返回 True,否则返回 False。
使用Python处理Nginx日志 Nginx日志中包含每个HTTP请求的客户端地址、时间、请求方法和页面、返回状态码、返回数据大小,UserAgent这些信息,本文的目的是在Python中使用正则表达式对这些信息进行格式化处理。