MST

星途 面试题库

面试题:Rust布尔类型在条件判断与泛型结合的应用

编写一个泛型函数`conditional_transform`,该函数接受一个泛型类型`T`的可变引用`value`,以及两个布尔类型变量`cond1`和`cond2`。当`cond1`为`true`时,将`value`转换为其字符串表示形式(假设`T`实现了`ToString` trait);当`cond2`为`true`时,将`value`转换为其哈希值(假设`T`实现了`Hash` trait)。如果两个条件都不满足,`value`保持不变。函数返回处理后的`value`。请给出完整的代码实现,包括必要的trait导入。
46.9万 热度难度
编程语言Rust

知识考点

AI 面试

面试题答案

一键面试
use std::fmt::ToString;
use std::hash::{Hash, Hasher};

fn conditional_transform<T>(value: &mut T, cond1: bool, cond2: bool) -> T
where
    T: ToString + Hash + Clone,
{
    if cond1 {
        let s = value.to_string();
        return s.into();
    } else if cond2 {
        let mut hasher = std::collections::hash_map::DefaultHasher::new();
        value.hash(&mut hasher);
        let hash_value = hasher.finish();
        return hash_value.into();
    }
    value.clone()
}