在Rust中($tokenstream:ident作为$ty:ty)是什么意思



我正在努力学习Rust,并希望了解此代码块中的所有内容。

#[macro_export(local_inner_macros)]
macro_rules! parse_macro_input {
($tokenstream:ident as $ty:ty) => {
match $crate::parse_macro_input::parse::<$ty>($tokenstream) {
$crate::export::Ok(data) => data,
$crate::export::Err(err) => {
return $crate::export::TokenStream::from(err.to_compile_error());
}
}
};
($tokenstream:ident) => {
parse_macro_input!($tokenstream as _)
};
} 

我目前的问题是($tokenstream:ident as $ty:ty)

  1. 在macro_rules中的参数名称前面有美元符号有什么意义?它有任何功能用途吗
  2. 代码行是什么意思?我读它的方式是;使用ident类型的参数tokenstream作为ty"类型的ty;,这对我来说毫无意义

谢谢

  1. 美元在一个铁锈宏观信号中签字;元变量";并且冒号之后的部分被称为"冒号";片段说明符";。CCD_ 2用于一种类型,CCD_ 3用于标识符,更多细节可以在这里找到
  2. 既然你似乎对学习感兴趣,而不仅仅是解决方案,我建议你继续阅读";Macros by Example";。在经历了这些之后,你可能可以为自己和这里的每个人回答问题2。(

最新更新