MST

星途 面试题库

面试题:Rust宏在元编程中的基础应用

请用Rust宏实现一个简单的代码生成功能,例如生成一组固定数量的函数,每个函数返回不同的固定整数值。并解释宏定义中的各个部分含义。
25.2万 热度难度
编程语言Rust

知识考点

AI 面试

面试题答案

一键面试
// 定义一个宏来生成函数
macro_rules! generate_functions {
    ($count:expr) => {
        $(
            fn generated_function_$($count)() -> i32 {
                $count
            }
        )*
    };
}

// 使用宏生成3个函数
generate_functions!(3);

fn main() {
    // 调用生成的函数
    println!("Value from generated_function_1: {}", generated_function_1());
    println!("Value from generated_function_2: {}", generated_function_2());
    println!("Value from generated_function_3: {}", generated_function_3());
}

宏定义各部分含义解释:

  1. macro_rules! generate_functions:定义一个名为 generate_functions 的宏。
  2. ($count:expr):宏的参数列表,这里定义了一个名为 $count 的参数,类型为表达式(expr),它代表要生成函数的数量。
  3. =>:分隔宏的模式匹配和替换部分。
  4. $( ... )*:这是一个重复构造,它会根据 $count 的值重复执行内部的代码块。内部的代码块为:
    • fn generated_function_$($count)() -> i32:定义一个函数,函数名为 generated_function_ 加上参数 $count 的值,返回类型为 i32
    • $count:函数体,直接返回参数 $count 的值。