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