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

宏(Macros) vs 方法(Methods)

区别 方法(Methods) 宏(Macros)
定义方式 impl 块中定义,绑定到具体类型。 通过 macro_rules! 或过程宏定义,生成代码。
调用时机 运行时执行逻辑(如计算数据)。 编译时展开为具体代码(如生成重复逻辑)。
作用对象 操作实例数据(如结构体、枚举的字段)。 操作代码片段(元编程),可生成任意代码。
参数 固定参数数量和类型。 支持可变参数和模式匹配(如 sum!(1, 2, 3))。
错误处理 错误可能在运行时出现。 错误在编译时(如宏展开失败)直接报错。
适用场景 封装类型行为(如计算、修改数据)。 生成代码、扩展语法(如 println!)、编译时计算。
相关推荐
摇滚侠11 小时前
《SpringBoot 3:入门与应用实战》第 12 章 JDBC 与事务 使用 JdbcTemplate 阅读笔记 32
spring boot·笔记·后端
步行cgn12 小时前
@Configuration 详解:Spring 配置类的核心注解
java·后端·spring
桦说编程14 小时前
【AtomicAgent系列1】变异测试——过去做不起,现在 agent 做得起
后端·ai编程·vibecoding
考虑考虑15 小时前
nginx打印请求日志
运维·后端·nginx
IT_陈寒15 小时前
Python的切片赋值把我坑惨了,这不是bug是特性
前端·人工智能·后端
CoderLiu15 小时前
程序化工具调用(PTC)与动态工作流引擎:深入大模型工具调用的架构演进与实践
前端·人工智能·后端
fireworks9916 小时前
SpringBoot2接入Knife4j
后端
wei_shuo16 小时前
数据迁移工具实战:KDMS自动化评估与量化决策体系解析
后端
Lightpwd16 小时前
Spring Boot 多数据源落地:AbstractRoutingDataSource + 注解切面(附源码)
数据库·后端
乱码三千16 小时前
使用ComfyUI+MinMax-H3音视频模型生成视频
前端·后端·github