宏的分类

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之自定义宏写法相关推荐

  1. 「rust笔记」rust之文件读写操作

    前言 Unix 哲学: "一切皆文件". 它描述了 Unix 的特性–所有输入/输出资源, 如文档, 目录, 硬盘驱动器, 调制解调器, 键盘, 打印机甚至一些进程间和网络通信, ...

  2. 「Rust笔记」Rust之vector排序总结

    1.前言 数据排序经常会使用到,很多语言都自带排序方法,Rust也不例外.这里详细介绍Rust数组排序的方法. 2.vector整数排序 这里通过 vec::sort 对一个整数 Vector 进行排 ...

  3. 「划线高亮」和「插入笔记」—— 不止是前端知识点

    如今前端领域:serverless,low code,全栈化等概念遍布漫天.开发者们热衷于讨论「如何把前端格局做大」,「如何将高高在上的概念落地」.此时,你有没有感受到「还不知道发展方向到底是什么,就 ...

  4. 「学习笔记」品优购项目-上(页面公共部分 )

    「学习笔记」品优购项目-上 品优购项目-上 目标 品优购项目规划 网站制作流程 品优购项目介绍 品优购项目的学习目的 开发工具以及技术栈 开发工具 技术栈 品优购项目搭建工作 创建的文件夹如下(称为项 ...

  5. 「学习笔记」移动Web开发之rem适配布局10

    「学习笔记」移动Web开发之rem适配布局10 一.rem单位 1.1 rem 单位 二.媒体查询 2.1 什么是媒体查询 2.2 语法规范 2.2.1 mediatype 查询类型 2.2.2 关键 ...

  6. 「学习笔记」HTML5CSS3提高6(上)

    「学习笔记」HTML5&CSS3提高6(上) HTML5新特性 概述 语义化标签 (★★) 多媒体标签 视频标签- video(★★★) 基本使用 兼容写法 video 常用属性 音频标签- ...

  7. 「学习笔记」黑马面面布局开发

    「学习笔记」黑马面面布局开发 黑马面面布局开发 一.目的 1.1 技术方案 1.2 代码规范 1.2 目录规范 二.流程开发 2.1 蓝湖/摹客协作平台 2.2 适配方案 2.3 初始化文件 2.4 ...

  8. 「学习笔记」多项式的蛇皮操作

    文章目录 「学习笔记」多项式的蛇皮操作 前置知识 趋近 自然常数 对数 逆元 导函数 牛顿迭代与泰勒公式 不定积分与定积分 多项式乘法 多项式求逆元 多项式除法/取模 多项式牛顿迭代法 多项式开根 「 ...

  9. 「学习笔记」移动Web开发之flex布局9

    「学习笔记」移动Web开发之flex布局9 一.flex布局体验 1.1 传统布局与flex布局 1.2 初体验 二.flex布局原理 2.1 布局原理 三.flex布局父项常见属性 3.1 常见父项 ...

最新文章

  1. 为什么都说 Go 是大厂通行证!
  2. Swift3.0语言教程获取字符串长度
  3. 企业数字化转型必看!建立企业级数据分析,必须重点修炼这4种能力
  4. C++多态,虚函数,纯虚函数
  5. php post请求跳转,学习猿地-php如何实现post跳转
  6. python遍历数组冒泡排序法_十种排序七种搜索算法的Python实现——气泡排序,十大,七大,查找,python,冒泡排序,bubblesort...
  7. mysql 端口time_wait_linux上大量tcp端口处于TIME_WAIT的问题
  8. java jaxb xml
  9. SpringBoot集成Actuator监控管理
  10. android 7.0 自启管理,一款不错的android6.0、7.0权限管理器推荐
  11. 教你如何计算腰围~~
  12. RAID一个硬盘FAIL。
  13. C语言实现电脑关机程序
  14. 互联网常见域名后缀含义
  15. 联想启天电脑教室黑屏硬盘保护系统EDU8.0.2.19修复手记
  16. MySQL技能树学习总结
  17. FirefoxOS 系统进程初步分析 底层系统继承自 android
  18. PYTHON-小白入门-学习顺序
  19. Comparator自定义顺序
  20. 什么是好的大学生活?

热门文章

  1. MRPII/ERP实施和应用十大忠告(转)
  2. shell 脚本如何判断文件是否存在
  3. cctalk录屏去水印翻录过检测教程
  4. python列表和集合的异同_Python中的list与tuple集合区别解析
  5. Reac项目搭建,学习React hooks
  6. excel中从两列数据中找到相同的数据,并用颜色填充单元格
  7. Initializing from file failed
  8. Pylon SDK的C语言使用流程详解及代码示例
  9. Java实现第九届蓝桥杯等腰三角形
  10. 肺活量测试软件原理,学校里测肺活量的机器为什么有孔?有孔怎么测得准,是什么原理?...