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

分类: 计算机技术
推荐阅读:
C语言isprint()函数:判断字符是否可打印 isprint()是C语言标准库中的一个函数,用于检查一个字符是否为可打印字符;该函数与isgraph()函数有点相似,isgraph()函数也用于检查一个字符是否为可打印字符(但不包括空格字符),而isprint()函数则包含空格字符;
让Linux终端像电影里一样下起数字雨 在Linux系统里,如果你想要实现电影里的数字雨,一条命令即可:
判断文件格式 在某些时候,我们需要判断文件是什么类型;而通过文件后缀(扩展名)并不能满足需求,因为扩展名可随意修改,试想一下对方给你发送了一个伪造扩展名的图片文件,实际上却是个木马病毒,又或者恶意攻击者上传了一个木马病毒到你的服务器,而你的程序却认为它是张图片;
PySide6 事件详细教程 在PySide6中,事件是GUI应用程序中用户交互和其它系统事件的基本构成块;PySide6中的事件允许您捕获和处理各种类型的事件,从而实现对用户界面的交互和响应;
使用Session实例让requests保持会话 Session对象能让你跨请求保持某些参数;最长常见的是,当你使用requests尝试登录并且验证成功,服务端会返回一些Cookie,这些Cookie可以使你的下次请求不需要验证,而Session对象能保持这些Cookie,而不用你每次提交请求时构建一个新的Cookie。
Python计算卡特兰数(catanlan number) 卡特兰数(Catalan number),是组合数学中一种常出现于各种计数问题中的数列;本文使用Python来计算卡特兰数;