「Rust笔记」Rust之自定义宏写法
Posted 图解AI
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了「Rust笔记」Rust之自定义宏写法相关的知识,希望对你有一定的参考价值。
宏的分类
1)宏按照来源分类
声明宏(Declarative Macro)和过程宏(Procedural Macro)。
前者指的是用某种语法直接声明出的宏。
后者是对应直接生成抽象语法树的过程的宏。
2)宏按照使用方式分类
属性宏:给声明添加属性的宏,例如 #[derive(Debug)] 和 #[test]。
调用宏:像函数一样的宏,例如 println!。
3)来源分类与使用分类直接关系
明宏都是用 macro_rules! 声明出的,它声明出的一定是调用宏。过程宏可以产生属性宏,也可以产生调用宏,也就是说,属性宏都是过程宏,调用宏可能是声明宏或者过程宏。
宏的定义
使用 macro_rules!进行自定义
常用的println()宏的大概形式:
macro_rules! println
() => (println!("\\n"));
($fmt: expr) => (print!(concat!($fmt, "\\n")));
($fmt: expr, $($(arg:tt)*) =>
(print!(concat!($fmt, "\\n"), $($arg)*));
1) 组成部分
有三个部分,输入分别是 ()、($fmt:ex
以上是关于「Rust笔记」Rust之自定义宏写法的主要内容,如果未能解决你的问题,请参考以下文章