在Rust宏中,可以使用concat_idents!
宏来跟随一个符号来获取另一个函数定义的令牌流。
concat_idents!
宏是Rust标准库中的一个宏,用于将两个标识符连接成一个新的标识符。通过使用concat_idents!
宏,我们可以在宏中动态地生成函数名或变量名。
下面是一个示例代码,展示了如何使用concat_idents!
宏来跟随一个符号来获取另一个函数定义的令牌流:
macro_rules! follow_symbol {
($symbol:ident) => {
concat_idents!($symbol, _definition)
};
}
fn main() {
fn my_function_definition() {
println!("This is my function definition");
}
let function_name = follow_symbol!(my_function);
function_name();
}
fn my_function_definition() {
println!("This is another function definition");
}
在上述代码中,我们定义了一个宏follow_symbol!
,它接受一个标识符作为参数,并使用concat_idents!
宏将该标识符与_definition
连接起来。然后,在main
函数中,我们使用follow_symbol!
宏来获取my_function
的函数定义,并将其存储在function_name
变量中。最后,我们调用function_name
来执行获取到的函数定义。
需要注意的是,Rust宏在编译时展开,因此它只能获取到编译时可知的函数定义。如果函数定义在宏之后或在其他模块中,则无法通过宏来获取其令牌流。
推荐的腾讯云相关产品和产品介绍链接地址:
以上是关于在Rust宏中如何跟随一个符号来获取另一个函数定义的令牌流的完善且全面的答案。
领取专属 10元无门槛券
手把手带您无忧上云