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

能否编写可接收引用自身定义变量表达式的Rust宏?

实现需求的Rust宏

完全可以实现这个需求,用Rust的声明式宏macro_rules!就能搞定。以下是具体的宏定义:

macro_rules! my_macro {
    ($expr:expr) => {
        {
            let left = 0;
            let right = 1;
            $expr
        }
    };
}

工作原理

  • 宏通过$expr:expr模式捕获你传入的任意表达式(比如left + right)。
  • 展开时会先在代码块内定义left和right变量(分别赋值为0和1),再把捕获到的表达式放进去执行。

使用示例

fn main() {
    let sum = my_macro!(left + right);
    println!("计算结果: {}", sum); // 输出 1
}

因为使用者已知left和right是宏内的特殊变量名,所以直接在传入的表达式中引用即可,宏展开后会正确解析这两个变量。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 19:02:41