MST

星途 面试题库

面试题:Rust中match表达式的复杂模式匹配与闭包结合

给定一个包含不同类型值的枚举`enum Value { Int(i32), Float(f64), StringVal(String), Func(fn(i32) -> i32) }`,以及一个`Vec<Value>`。编写一个函数,使用`match`表达式对`Vec`中的每个元素进行操作。对于`Int`类型,将其值翻倍;对于`Float`类型,将其值平方;对于`StringVal`类型,打印字符串长度;对于`Func`类型,调用闭包并传入一个固定值`5`,然后将结果存储在一个新的`Vec`中返回。要求代码简洁、高效且符合Rust的最佳实践。
25.7万 热度难度
编程语言Rust

知识考点

AI 面试

面试题答案

一键面试
enum Value {
    Int(i32),
    Float(f64),
    StringVal(String),
    Func(fn(i32) -> i32),
}

fn process_values(values: Vec<Value>) -> Vec<i32> {
    let mut result = Vec::new();
    for value in values {
        match value {
            Value::Int(i) => result.push(i * 2),
            Value::Float(f) => result.push((f * f) as i32),
            Value::StringVal(s) => result.push(s.len() as i32),
            Value::Func(func) => result.push(func(5)),
        }
    }
    result
}