MST

星途 面试题库

面试题:Rust闭包链式调用中如何处理不同类型参数

在Rust中,假设有一个闭包链式调用场景,第一个闭包接受一个整数参数并返回一个字符串,第二个闭包需要接收这个字符串并返回一个浮点数。请编写代码实现这个闭包链式调用,并说明如何处理类型转换和传递。
20.1万 热度难度
编程语言Rust

知识考点

AI 面试

面试题答案

一键面试
fn main() {
    let int_to_string = |num: i32| num.to_string();
    let string_to_float = |s: String| s.parse::<f64>().unwrap();

    let result = int_to_string(42).and_then(string_to_float);
    println!("Result: {}", result);
}
  1. 类型转换和传递说明
    • int_to_string闭包将i32类型的整数转换为String类型。它使用to_string方法进行转换。
    • string_to_float闭包将String类型转换为f64类型。它使用parse方法进行转换,并使用unwrap方法处理可能的解析错误(实际应用中建议使用更稳健的错误处理方式,如Result类型的map_err等)。
    • 在链式调用中,and_then方法用于将第一个闭包的结果(String类型)传递给第二个闭包。and_then方法会在第一个闭包成功返回后,将返回值传递给第二个闭包并执行第二个闭包。如果第一个闭包返回的是Errand_then方法会直接返回这个Err而不会执行第二个闭包。