|
|
@ -250,7 +250,7 @@ fn fn_elision(x: &i32) -> &i32 {..}
|
|
|
|
let closure_slision = |x: &i32| -> &i32 { x };
|
|
|
|
let closure_slision = |x: &i32| -> &i32 { x };
|
|
|
|
```
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
编译器就必须深入到闭包函数体中,去分析和推测生命周期,复杂度因此极具提升:试想一下,编译器该如何从复杂的上下文中分析出参数引用的生命周期和闭包体中生命周期的关系?
|
|
|
|
编译器就必须深入到闭包函数体中,去分析和推测生命周期,复杂度因此急剧提升:试想一下,编译器该如何从复杂的上下文中分析出参数引用的生命周期和闭包体中生命周期的关系?
|
|
|
|
|
|
|
|
|
|
|
|
由于上述原因(当然,实际情况复杂的多),Rust 语言开发者目前其实是有意针对函数和闭包实现了两种不同的生命周期消除规则。
|
|
|
|
由于上述原因(当然,实际情况复杂的多),Rust 语言开发者目前其实是有意针对函数和闭包实现了两种不同的生命周期消除规则。
|
|
|
|
|
|
|
|
|
|
|
|