MST

星途 面试题库

面试题:Rust结构体生命周期与泛型和 trait 的深度融合

定义一个泛型 trait `DataProcessor`,它有一个方法 `process`,接收并处理一个包含不同生命周期数据的结构体 `DataHolder`。`DataHolder` 结构体包含两个成员,一个是 `T` 类型的数据(`T` 实现 `Clone` trait),另一个是一个字符串切片。要求在实现 `DataProcessor` trait 的 `process` 方法时,正确处理 `DataHolder` 中不同生命周期数据,并且保证代码能通过Rust的借用检查。请编写完整的代码,包括 `DataHolder` 结构体定义、`DataProcessor` trait 定义以及一个具体类型实现 `DataProcessor` trait 的示例。
45.3万 热度难度
编程语言Rust

知识考点

AI 面试

面试题答案

一键面试
// 定义DataHolder结构体
struct DataHolder<T>
where
    T: Clone,
{
    data: T,
    str_slice: &'static str,
}

// 定义泛型trait DataProcessor
trait DataProcessor<T>
where
    T: Clone,
{
    fn process(&self, holder: DataHolder<T>) -> T;
}

// 定义一个具体类型实现DataProcessor trait
struct Processor;

impl<T> DataProcessor<T> for Processor
where
    T: Clone,
{
    fn process(&self, holder: DataHolder<T>) -> T {
        // 处理数据
        holder.data.clone()
    }
}