用 Fn 特征解决闭包生命周期

52 阅读1分钟
fn main() {
   //  let closure_slision = |x: &i32| -> &i32 { x }; -- 编译不通过
   let closure_slision = fun(|x: &i32| -> &i32 { x });
   assert_eq!(*closure_slision(&45), 45);
   // Passed !
}

fn fun<T, F: Fn(&T) -> &T>(f: F) -> F {
   f
}