MST

星途 面试题库

面试题:Rust中泛型函数使用引用参数与返回值的高级特性

编写一个泛型函数,该函数接受两个不同类型但都实现了`Copy` trait的结构体的引用作为参数,在函数内部对两个结构体进行特定的操作(例如,将两个结构体中某个字段的值相加),然后返回一个新的结构体,该结构体类型是由两个输入结构体类型组合而成(例如,新结构体包含两个输入结构体的部分字段),并正确处理好引用参数和返回值的生命周期以及泛型约束。阐述这样设计在实际项目中的应用场景及优势。
47.0万 热度难度
编程语言Rust

知识考点

AI 面试

面试题答案

一键面试
// 定义两个示例结构体
struct StructA {
    field_a: i32,
}

struct StructB {
    field_b: i32,
}

// 定义组合后的结构体
struct CombinedStruct {
    field_a: i32,
    field_b: i32,
}

// 泛型函数
fn combine_structs<T, U>(a: &T, b: &U) -> CombinedStruct
where
    T: Copy,
    U: Copy,
{
    CombinedStruct {
        field_a: a.field_a,
        field_b: b.field_b,
    }
}

应用场景

  1. 数据整合:在处理来自不同数据源但具有部分相关数据的结构体时,可使用此函数将数据整合到一个结构体中。例如,从数据库获取用户基本信息(StructA)和用户统计信息(StructB),然后整合为一个包含完整用户信息的结构体。
  2. 配置合并:不同模块可能有各自的配置结构体,在某些情况下需要将这些配置合并。

优势

  1. 代码复用:通过泛型函数,可以适用于不同类型但满足相同Copy trait约束的结构体,避免为每种类型组合编写重复代码。
  2. 类型安全:Rust的类型系统确保了在编译时就能发现类型不匹配等错误,提高了程序的稳定性。
  3. 清晰的设计:函数的设计明确了输入和输出的关系,使得代码逻辑更加清晰易懂。