MST

星途 面试题库

面试题:Rust函数返回值引用在泛型和特质约束下的处理

定义一个特质 `HasValue`,它有一个关联类型 `ValueType` 并提供一个方法 `get_value` 返回 `&Self::ValueType`。编写一个泛型函数,该函数接收实现了 `HasValue` 特质的两个对象的引用,比较它们 `get_value` 方法返回值的大小(假设 `Self::ValueType` 实现了 `PartialOrd` 特质),返回较大值的引用。要求在不同生命周期和泛型参数情况下,保证引用的正确性和安全性,同时优化代码性能,避免不必要的复制。
31.0万 热度难度
编程语言Rust

知识考点

AI 面试

面试题答案

一键面试
// 定义特质HasValue
trait HasValue {
    type ValueType;
    fn get_value(&self) -> &Self::ValueType;
}

// 泛型函数,比较两个实现了HasValue特质对象的get_value返回值大小
fn compare_values<T: HasValue>(a: &T, b: &T) -> &T::ValueType
where
    T::ValueType: PartialOrd,
{
    let value_a = a.get_value();
    let value_b = b.get_value();
    if value_a >= value_b {
        value_a
    } else {
        value_b
    }
}