面试题答案
一键面试// 定义函数式宏
macro_rules! add_numbers {
($a:expr, $b:expr) => {
$a + $b
};
}
fn main() {
let result = add_numbers!(3, 5);
println!("The sum is: {}", result);
}
关键部分解释:
macro_rules!
:这是Rust中用于定义宏的关键字。add_numbers!
:宏的名称,遵循标识符!
的命名规则 ,在调用宏时使用此名称。($a:expr, $b:expr)
:宏的参数部分,$a
和$b
是参数名,:expr
表示这些参数的类型为表达式。这意味着传递给宏的参数可以是任何有效的Rust表达式。=>
:分隔宏的模式匹配和替换部分。$a + $b
:替换部分,在这里将传递进来的两个参数$a
和$b
相加,当宏被调用时,这部分代码会替换宏调用处的代码。