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

如何在Rust宏中调用传入标识符的方法?

在Rust宏中调用传入标识符的实例方法

问题分析

你的代码编译报错是因为错误使用了<$foo>语法——这个写法在Rust里用于指定类型(比如<i32>::max这类关联方法调用),但你传入的$foo是变量标识符,并非类型,所以编译器会期望你用::调用关联方法,而非.调用实例方法。

修正方案

直接去掉尖括号,用变量标识符直接调用实例方法即可:

macro_rules! macro_test {
    ($foo:ident) => {
        {
            println!("{}", $foo.to_string());
        }
    }
}

fn main() {
    let ss = "sim";
    macro_test!(ss);
}

补充说明

  • 若需要在宏中调用类型的关联方法,才需要用<类型>::方法()的语法,比如<u32>::from_str("42")。
  • 调用变量的实例方法时,和普通代码逻辑一致,直接用变量.方法()的形式即可,宏会自动将标识符替换为对应的变量名。

内容的提问来源于stack exchange,提问作者Cucaracha Anónima

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 01:05:24