MST
星途 面试题库

面试题:Rust Option枚举与泛型结合使用

实现一个泛型函数,该函数接收两个`Option<T>`类型的参数,返回一个`Option<T>`。返回值遵循以下规则:如果第一个`Option`是`Some`,则返回第一个`Option`;否则返回第二个`Option`。同时,为这个函数添加合适的泛型约束,并解释为什么需要这些约束。
31.1万 热度难度
编程语言Rust

知识考点

AI 面试

面试题答案

一键面试
fn choose<T>(first: Option<T>, second: Option<T>) -> Option<T> {
    first.unwrap_or(second)
}

泛型约束及原因

  1. 泛型参数 T 无特定约束:在这个函数中,T 不需要特定的约束,因为 unwrap_or 方法对于任何类型 T 都适用。unwrap_or 方法的功能是如果 OptionSome,则返回其中的值,否则返回传入的默认值(这里就是第二个 Option)。所以不需要对 T 进行额外的限定,如 CloneCopy 等,因为函数逻辑并未涉及这些特性的操作。