You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Rust宏中同时获取变量的名称与对应值?

实现方法

完全可以实现该需求,Rust标准库内置的stringify!宏可以实现类似C语言宏中#运算符的功能,它会将传入的语法片段直接转换为对应的字符串字面量。

单变量版本实现

宏定义代码如下:

macro_rules! printvar {
    ($x:expr) => {
        println!("{} = {}", stringify!($x), $x);
    };
}

使用示例:

fn main() {
    let my_variable: i32 = 5;
    printvar!(my_variable); // 输出:my_variable = 5
}

多变量扩展版本

可以进一步修改宏以支持同时打印多个变量:

macro_rules! printvar {
    // 支持任意数量逗号分隔的参数,末尾可选逗号
    ($($x:expr),+ $(,)?) => {
        $(
            println!("{} = {}", stringify!($x), $x);
        )+
    };
}

使用示例:

fn main() {
    let age = 25;
    let name = "张三";
    let score = 94.5;
    printvar!(age, name, score);
}

输出结果:

age = 25
name = 张三
score = 94.5

补充说明

如果传入的参数是表达式而非单独变量,stringify!会将整个表达式转换为字符串,例如执行printvar!(age * 2)会输出age * 2 = 50,属于正常行为。

内容的提问来源于stack exchange,提问作者JShorthouse

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 18:15:04