MST

星途 面试题库

面试题:Rust宏定义基础使用

在Rust中,如何定义一个简单的函数式宏,它接受两个整数参数并返回它们的和?请写出具体代码,并解释宏定义中的关键部分。
29.3万 热度难度
编程语言Rust

知识考点

AI 面试

面试题答案

一键面试
// 定义函数式宏
macro_rules! add_numbers {
    ($a:expr, $b:expr) => {
        $a + $b
    };
}

fn main() {
    let result = add_numbers!(3, 5);
    println!("The sum is: {}", result);
}

关键部分解释:

  1. macro_rules!:这是Rust中用于定义宏的关键字。
  2. add_numbers!:宏的名称,遵循标识符!的命名规则 ,在调用宏时使用此名称。
  3. ($a:expr, $b:expr):宏的参数部分,$a$b 是参数名,:expr 表示这些参数的类型为表达式。这意味着传递给宏的参数可以是任何有效的Rust表达式。
  4. =>:分隔宏的模式匹配和替换部分。
  5. $a + $b:替换部分,在这里将传递进来的两个参数$a$b相加,当宏被调用时,这部分代码会替换宏调用处的代码。