这两种功能在 rust 病中有什么区别?
fn foo<'a>(x: &'a i32) -> &'a i32 { x } fn foo<'a: 'b, 'b>(x: &'a i32) -> &'b i32 { x }
当在多个函数参数中以及在返回值中使用相同的生存期参数'a时,提供了哪些约束?
'a
fn foo<'a>(x: &'a i32, y: &'a i32) -> &'a i32 { ... }
toiithl61#
就我所知有两点不同:
let f: fn(&i32) -> &i32 = foo2;
您几乎总是需要(1),因为它不太冗长,并且允许HRTB。2.生命周期是最小的。忽略问题1中的点,这与以下等式相同:
fn foo<'a, 'b: 'a, 'c: 'a>(x: &'b i32, y: &'c i32) -> &'a i32 { ... }
1条答案
按热度按时间toiithl61#
就我所知有两点不同:
let f: fn(&i32) -> &i32 = foo2;
不能编译)。您几乎总是需要(1),因为它不太冗长,并且允许HRTB。
2.
生命周期是最小的。忽略问题1中的点,这与以下等式相同: