MST

星途 面试题库

面试题:Rust类型别名与泛型的结合使用

定义一个泛型结构体 `Wrapper<T>`,包含一个 `T` 类型的字段。接着定义一个类型别名 `IntWrapper`,它基于 `Wrapper` 且具体类型为 `i32`。然后编写一个函数,该函数接受 `IntWrapper` 作为参数,对其中的 `i32` 值进行平方操作并返回结果。要求代码能正确处理借用和生命周期问题,并解释类型别名如何简化这种泛型使用场景。
21.9万 热度难度
编程语言Rust

知识考点

AI 面试

面试题答案

一键面试
// 定义泛型结构体
struct Wrapper<T> {
    data: T,
}

// 定义类型别名
type IntWrapper = Wrapper<i32>;

// 定义函数,对IntWrapper中的i32值进行平方操作
fn square_wrapper(wrapper: IntWrapper) -> i32 {
    wrapper.data * wrapper.data
}

类型别名简化泛型使用场景的解释

  1. 减少重复:在没有类型别名时,每次使用 Wrapper<i32> 都需要完整地书写,当这种特定类型的 Wrapper 使用频繁时,代码会变得冗长。类型别名 IntWrapper 就像给 Wrapper<i32> 取了一个简短的名字,使得代码更加简洁。
  2. 提高可读性IntWrapper 这个名字比 Wrapper<i32> 更直观地表达了它是对 i32 类型数据的包装,让代码阅读者能更快理解其用途,尤其是在复杂的代码逻辑中。
  3. 方便修改:如果未来需要修改包装的 i32 为其他类型(比如 u32),只需要在定义类型别名的地方修改 Wrapper<i32>Wrapper<u32>,而不需要在所有使用 IntWrapper 的地方逐个修改。