问题1
在Rust 中,这两种功能有什么不同?
fn foo<'a>(x: &'a i32) -> &'a i32 {
x
}
fn foo<'a: 'b, 'b>(x: &'a i32) -> &'b i32 {
x
}
问题2
当在多个函数参数之间以及在返回值中使用相同的生命周期 参数'a
时,提供了什么约束?
fn foo<'a>(x: &'a i32, y: &'a i32) -> &'a i32 {
...
}
在Rust 中,这两种功能有什么不同?
fn foo<'a>(x: &'a i32) -> &'a i32 {
x
}
fn foo<'a: 'b, 'b>(x: &'a i32) -> &'b i32 {
x
}
当在多个函数参数之间以及在返回值中使用相同的生命周期 参数'a
时,提供了什么约束?
fn foo<'a>(x: &'a i32, y: &'a i32) -> &'a i32 {
...
}
据我所知,有两点不同:
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 {
...
}