MST
星途 面试题库

面试题:Rust结构体的泛型方法与trait约束

定义一个泛型结构体`Pair<T>`,包含两个字段`first`和`second`,类型均为`T`。为`Pair<T>`实现一个方法`cmp_by_length`,该方法要求`T`实现了`AsRef<str>` trait,方法用于比较两个字段所对应的字符串长度并返回较长的那个。写出完整的代码实现,包括必要的trait引入和泛型约束。
27.9万 热度难度
编程语言Rust

知识考点

AI 面试

面试题答案

一键面试
use std::convert::AsRef;

struct Pair<T> {
    first: T,
    second: T,
}

impl<T: AsRef<str>> Pair<T> {
    fn cmp_by_length(&self) -> &str {
        let first_len = self.first.as_ref().len();
        let second_len = self.second.as_ref().len();
        if first_len >= second_len {
            self.first.as_ref()
        } else {
            self.second.as_ref()
        }
    }
}