Rust 片段说明符—模式的种类
示例
在中$e:expr,expr称为片段说明符。它告诉解析器该参数$e期望什么样的令牌。Rust提供了多种片段说明符,使输入非常灵活。
请注意,文档注释///comment的处理方式与#[doc="comment"]宏相同。
macro_rules! declare_const_option_type {
(
$(#[$attr:meta])*
const $name:ident: $ty:ty as optional;
) => {
$(#[$attr])*
const $name: Option<$ty> = None;
}
}
declare_const_option_type! {
///一些文档评论
const OPT_INT: i32 as optional;
}
//以上内容将扩展为:
#[doc="some doc comment"]
const OPT_INT: Option<i32> = None;按照设定
某些片段说明符要求标记,它后面必须是一个受限制的集合之一,称为“跟随集合”。这为Rust的语法发展提供了一定的灵活性,而又不会破坏现有的宏。
macro_rules! invalid_macro {
($e:expr + $f:expr) => { $e + $f };
//^
//+不在expr的跟随集中,
//因此编译器将不接受此宏定义。
($($e:expr)/+) => { $($e)/+ };
//^
//分隔符`/`不在`expr`的跟随集中
//因此编译器将不接受此宏定义。
}
热门推荐
10 对患者生日祝福语简短
11 结婚祝福语简短装备
12 周岁祝福语学生文案简短
13 订婚领证祝福语简短精辟
14 导师获奖祝福语大全简短
15 新婚购房祝福语简短精辟
16 牛年祝福语简短的爱人
17 送芒果的祝福语简短
18 送给学长毕业祝福语简短