< 返回版块
xznsoft
发表于 2018-03-19 16:38
Tags:macro
我期望调用一个宏:比如
get_fn!(foo);
这个宏get_fn会创建一个get_foo函数:
fn get_foo() -> i8 {
100
}
我试着这样写报错
#[macro_export]
macro_rules! get_fn {
($name:ident) => {
fn get_$name() -> i8 {
100
}
};
}
最关键问题的是怎么把foo改为get_foo
这种需求的宏应该怎么写???
评论区
写评论谢谢大家回复
查了很多资料目前好像实现起来挺困难的
https://github.com/SkylerLipthay/interpolate_idents 这个crate通过编译器插件的方式实现了类似的功能
concat_idents 只能生成已经定义的identifier,不能用于定义新identifier
可以用 proc_macro