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

宏(Macros) vs 方法(Methods)

区别 方法(Methods) 宏(Macros)
定义方式 impl 块中定义,绑定到具体类型。 通过 macro_rules! 或过程宏定义,生成代码。
调用时机 运行时执行逻辑(如计算数据)。 编译时展开为具体代码(如生成重复逻辑)。
作用对象 操作实例数据(如结构体、枚举的字段)。 操作代码片段(元编程),可生成任意代码。
参数 固定参数数量和类型。 支持可变参数和模式匹配(如 sum!(1, 2, 3))。
错误处理 错误可能在运行时出现。 错误在编译时(如宏展开失败)直接报错。
适用场景 封装类型行为(如计算、修改数据)。 生成代码、扩展语法(如 println!)、编译时计算。
相关推荐
Java水解几秒前
springboot: Spring Boot 启动流程详解
spring boot·后端
马卡巴卡7 分钟前
为什么Spring不建议使用@Autowired?@Resource才是王道
后端
martin10178 分钟前
Oracle 11g 数据库卡顿排查与实战优化:一次真实的慢 SQL 定位全过程
数据库·后端
superman超哥17 分钟前
Rust Cargo Run 与 Cargo Test 命令:开发工作流的双引擎
开发语言·后端·rust·cargo run·cargo test·开发工作流·双引擎
MMM_FanLe18 分钟前
微博/朋友圈/点赞/评论系统设计
后端
架构精进之路27 分钟前
AI 编程:重构工作流的思维与实践
后端·ai编程·trae
爬山算法34 分钟前
Hibernate(9)什么是Hibernate的Transaction?
java·后端·hibernate
Craaaayon35 分钟前
深入浅出 Spring Event:原理剖析与实战指南
java·spring boot·后端·spring
Apifox1 小时前
Apifox 12 月更新| AI 生成用例同步生成测试数据、接口文档完整性检测、设计 SSE 流式接口、从 Git 仓库导入数据
前端·后端·测试
Taylor不想被展开1 小时前
Trae CN 如何修改默认 JDK 版本
后端