rust基础-宏与方法之间的区别

宏(Macros) vs 方法(Methods)

区别 方法(Methods) 宏(Macros)
定义方式 impl 块中定义,绑定到具体类型。 通过 macro_rules! 或过程宏定义,生成代码。
调用时机 运行时执行逻辑(如计算数据)。 编译时展开为具体代码(如生成重复逻辑)。
作用对象 操作实例数据(如结构体、枚举的字段)。 操作代码片段(元编程),可生成任意代码。
参数 固定参数数量和类型。 支持可变参数和模式匹配(如 sum!(1, 2, 3))。
错误处理 错误可能在运行时出现。 错误在编译时(如宏展开失败)直接报错。
适用场景 封装类型行为(如计算、修改数据)。 生成代码、扩展语法(如 println!)、编译时计算。
相关推荐
Ai拆代码的曹操29 分钟前
Spring 事务 REQUIRES_NEW 嵌套调用:连接池翻倍的秘密
java·后端·spring
Ivanqhz2 小时前
Rust &‘static str浅析
java·前端·javascript·rust
IT_陈寒2 小时前
SpringBoot这个分页坑,我踩了三天才爬出来
前端·人工智能·后端
颜酱2 小时前
05 | 召回前置准备:根据业务数据库生成各数据库(读取配置阶段)
前端·人工智能·后端
Wang's Blog2 小时前
Go-Zero项目开发24: 基于Bitmap实现群聊消息已读未读
开发语言·后端·golang
Conan在掘金3 小时前
鸿蒙报错速查:struct 里嵌 namespace 声明就炸,根因 + 真解法
后端
东方小月3 小时前
从零开发一个 Coding Agent(三):EventStream 事件流通道设计与实现
前端·人工智能·后端
卫子miao3 小时前
如何评价当前大语言模型的记忆机制?
后端·架构
神奇小汤圆4 小时前
为什么 AQS 成为 Java 并发的基石?
后端
星栈5 小时前
MCP 从 stdio 迁到 SSE,踩了 5 个传输层坑
人工智能·后端·架构