rust基础-宏与方法之间的区别
宏(Macros) vs 方法(Methods)
区别 | 方法(Methods) | 宏(Macros) |
---|---|---|
定义方式 | 在 impl 块中定义,绑定到具体类型。 | 通过 macro_rules! 或过程宏定义,生成代码。 |
调用时机 | 运行时执行逻辑(如计算数据)。 | 编译时展开为具体代码(如生成重复逻辑)。 |
作用对象 | 操作实例数据(如结构体、枚举的字段)。 | 操作代码片段(元编程),可生成任意代码。 |
参数 | 固定参数数量和类型。 | 支持可变参数和模式匹配(如 sum!(1, 2, 3) )。 |
错误处理 | 错误可能在运行时出现。 | 错误在编译时(如宏展开失败)直接报错。 |
适用场景 | 封装类型行为(如计算、修改数据)。 | 生成代码、扩展语法(如 println! )、编译时计算。 |