Rust编程语言里的宏macro-域宏基金

John 0 2026-09-22

在前端开发中

像angular,vuejs,react

可以定义组件

然后复用到需要这个功能的地方

网站运行起来后组件所在的地方

就会生成同样模式的代码

后端编程里也有类似的

Python有装饰器

vba里就有一个宏应用

我们来看看rust语言里的宏

它是除了future更重要的概念

它用来对功能和语法的扩展

做可变接口类似println

一般定义宏的语法如下

上面的log是创建的宏的名字

$expres是传入宏的参数

也叫元变量

$crate是关键字元变量

这里用expr指示符或者说片段指示符来说明传入给expr的是表达式

元变量是以$开头的

还有很多其它的指示符

代表可以传入的不同类型的对象

这个宏没有返回值

你可以定义带返回值的

=>左侧的是匹配器

右侧是转换器

以上是对代码形式的说明

下面说说传入的参数

除了上面表示表达式的expr

它还可以是块

用block指示符

可以是变量或者函数

用ident指示符

可以是字面量

用literal指示符

可以是模式

用pat指示符

可以是路径

用path指示符

可以是语句

用stmt指示符

可以是令牌树

用tt指示符

可以是类型

用ty指示符

可以是可见性限定符

用vis指示符

可以是crate的组成部分

用item指示符

item是各种数据结构的定义声明实现等

宏的其它定义用法

可以定义重载

可以有类似数组参数

这是用$(..),+

根据需要+的待选有?和*

在调用宏的时候

注意它有scope的概念

默认是按照

代码在一个或者多个代码文件里

先后顺序的文本域

比如提前调用后面定义的宏

是不行的

这时候需要用路径域path based scope

当调用宏时

是不按照代码顺序去找宏的

macro_use可以用来

指示模块内部定义的宏的作用域

延伸到模块外

它还可以用来导入外部模块的宏

外部模块的宏需要用macro_export导出才可以

宏还有过程宏,下次再说,欢迎交流

ogp影像仪怎么样

影像仪

ogp

影像测量系统

上一篇: RSI动能指标触及三年低点纳斯达克100指数前景看涨-纳斯达克小公司市盈率
下一篇: SBINeoFinancialServices与AntWorks宣布成立合资企业-sbi基金
猜你喜欢