debugging - 如何在 Rust 中打印表达式及其值?

标签 debugging logging reflection macros rust

有没有办法做到这一点?

self.mega_ultra_field = 100500;
print_expr_and_value!(self.mega_ultra_field);

输出:

self.mega_ultra_field 100500

最佳答案

预制解决方案

使用dbg! :

dbg!(self.mega_ultra_field);
[src/main.rs:16] self.mega_ultra_field = 100500

自己写

使用stringify! :

macro_rules! print_expr_and_value {
    ($e:expr) => {
        eprintln!("{} {}", stringify!($e), $e)
    };
}
struct Foo {
    mega_ultra_field: i32,
}

impl Foo {
    fn bar(&mut self) {
        self.mega_ultra_field = 100500;
        print_expr_and_value!(self.mega_ultra_field);

        dbg!(self.mega_ultra_field);
    }
}

fn main() {
    Foo {
        mega_ultra_field: 0,
    }
    .bar();
}
self.mega_ultra_field 100500

关于debugging - 如何在 Rust 中打印表达式及其值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51803396/

相关文章:

java - 反射 - 将对象即时转换到未知的父类(super class)?

c# - 从 FullyName 字符串到 Type 对象

python - Python 中的奇怪错误 - 变量被视为全局而不是本地

node.js - 如何调试通过命令行 (cli) 启动的 Node 应用程序,如 forever 或 supervisor?

android - 在不在 OEM 列表中的 Android 硬件上调试

java - 如何删除 Java 记录器

java - 如何将 log4j 记录器包装在 slf4j 记录器中?

java - Java Gxt 中 ListStore 的迭代

linux - logrotate 后缀 : dateext + rotate

java - 如果所有元素都在同一个存储桶中,为什么会发生调整大小?