Rust高级进阶之 宏定义

Macro

Posted by 汤汤 on December 19, 2024

来自 black-hat-rust

  名称 导航
枚举 Option Rust之option、result枚举类型
枚举 Result Rust之option、result枚举类型
枚举变体 Some Rust之option、result枚举类型
枚举变体 Ok Rust之option、result枚举类型
枚举变体 Err Rust之option、result枚举类型
关键字 match Rust之match、let、lf-let关键字
关键字 let Rust之match、let、lf-let关键字
关键字 if let Rust之match、let、lf-let关键字
接口 Error Rust之Error接口(trait)
结构体 fmt::Formatter Rust之Error接口(trait)
接口 From Rust之From、Into接口(trait)
接口 Into Rust之From、Into接口(trait)
泛型函数 Rust之泛型函数
模式 Rust高级进阶之宏定义

Question:宏和函数有什么区别?

带着这个问题一起看

rust中的宏定义

  • 分为两大类
    • 声明式宏( declarative macros ) macro_rules!
      • 特点是:在编译时进行宏展开,替代原代码
    • 三种过程宏( procedural macros )
      • #[derive]自定义宏,可以为目标结构体或枚举派生指定的代码,如 Debug 特征
      • 属性宏(Attribute-like macro),用于为目标添加自定义的属性
      • 函数宏(Function-like macro),看上去就像是函数调用

声明式宏

过程宏:derive自定义宏

过程宏:类属性宏

过程宏:类函数宏