MST

星途 面试题库

面试题:Rust宏与泛型结合的代码生成

假设你需要创建一个宏 `generate_struct_with_method`,它可以生成一个结构体和一个关联方法。结构体有两个泛型类型参数 `T` 和 `U`,关联方法接受这两个类型的参数并返回它们某种组合的结果(比如将 `T` 和 `U` 转换为字符串并拼接)。请实现这个宏并给出使用示例。
26.9万 热度难度
编程语言Rust

知识考点

AI 面试

面试题答案

一键面试
macro_rules! generate_struct_with_method {
    ($name:ident) => {
        pub struct $name<T, U> {
            data1: T,
            data2: U,
        }

        impl<T, U> $name<T, U> {
            pub fn combine(&self) -> String
            where
                T: std::fmt::Display,
                U: std::fmt::Display,
            {
                format!("{}{}", self.data1, self.data2)
            }
        }
    };
}

// 使用示例
generate_struct_with_method!(MyStruct);

fn main() {
    let instance = MyStruct {
        data1: 10,
        data2: "hello",
    };
    let result = instance.combine();
    println!("{}", result);
}