作者:小天 | 来源:互联网 | 2023-05-24 18:38
我无法弄清楚为什么这段代码会编译:
fn f(v: &mut Vec) -> &[isize] {
v.as_mut_slice()
}
这不是:
fn f(v: &mut Vec) -> &[isize] {
v.as_slice()
}
生产:
:2:5: 2:6 error: `v` does not live long enough
:2 v.as_slice()
^
:1:38: 3:2 note: reference must be valid for the anonymous lifetime #1 defined on the block at 1:37...
:1 fn f(v: &mut Vec) -> &[isize] {
:2 v.as_slice()
:3 }
:1:38: 3:2 note: ...but borrowed value is only valid for the block at 1:37
:1 fn f(v: &mut Vec) -> &[isize] {
:2 v.as_slice()
:3 }
如果我理解正确,在任何一种情况下函数签名都是相同的,并且返回值的生命周期等于输入参数1.那么为什么"as_slice"不起作用?