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

Rust中使用宏索引元组时遭遇意外token错误求助

Rust元组遍历宏编译错误排查与修复

问题背景

尝试编写宏来遍历元组元素,弥补元组无法直接迭代的限制,但遇到编译错误:

error: expected one of `:`, `;`, `=`, `@`, or `|`, found `0`

错误原因

原宏代码中生成的变量名t$i会展开为t0、t1,而Rust的标识符命名规则要求必须以字母或下划线开头,以数字开头的t0、t1属于非法标识符,触发编译错误。

修复方案

将变量名修改为合法格式,比如在数字前添加下划线,确保标识符符合Rust规范:

fn main() {
    let tuple = (1, 2);

    macro_rules! index_tuple {
        ($($i:literal),+) => {
            $(
                let t_$i = tuple.$i;
            )+
        }
    }
    
    index_tuple!(0, 1);
}

修改后,宏展开会生成t_0、t_1这类合法标识符,代码即可正常编译运行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 04:08:14