gpt4 book ai didi

macros - 单个 Rust 宏可以生成多个声明吗?

转载 作者:行者123 更新时间:2023-11-29 08:19:31 25 4
gpt4 key购买 nike

作为学习练习,我正在尝试编写一个生成两个声明的宏。在此示例中,我尝试编写一个宏,为具有单个字段的枚举和包含该字段实例的静态向量生成声明:

#![feature(macro_rules)]
macro_rules! create_enum(
( $enum_name : ident , $a_field_name : ident ) =>
{
enum $enum_name { $a_field_name };
static foovec: [$enum_name,..1] = [ $a_field_name ];
};
)

create_enum! (Direction , NORTH)

我得到错误:

enums.rs:5:36: 5:37 error: macro expansion ignores token `;` and any following
enums.rs:5 enum $enum_name { $a_field_name };

我已经尝试了大约 10 种标点符号变体但都没有成功,所以我开始怀疑这是否只是不受 rust 宏的支持。

最佳答案

enum 声明不需要 ; 结尾。

这对我有用:

#![feature(macro_rules)]
macro_rules! create_enum(
( $enum_name : ident , $a_field_name : ident ) =>
{
enum $enum_name { $a_field_name }
static foovec: [$enum_name,..1] = [ $a_field_name ];
};
)

create_enum! (Direction , NORTH)

演示:http://is.gd/JxMAb1

关于macros - 单个 Rust 宏可以生成多个声明吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26136604/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com