我经常用共享的切片做这样的事情:
fn read_a_few_bytes(slice: &mut &[u8]) {
dbg!(&slice[..3]);
*slice = &slice[3..];
}
今天,我注意到,当切片可变时,这种方法不起作用:
fn read_a_few_bytes(slice: &mut &mut [u8]) {
dbg!(&slice[..3]);
*slice = &mut slice[3..];
}
第二个示例显示以下错误:
error: lifetime may not live long enough
--> src/main.rs:3:5
|
1 | fn read_a_few_bytes(slice: &mut &mut [u8]) {
| - - let's call the lifetime of this reference `'2`
| |
| let's call the lifetime of this reference `'1`
2 | dbg!(&slice[..3]);
3 | *slice = &mut slice[3..];
| ^^^^^^^^^^^^^^^^^^^^^^^^ assignment requires that `'1` must outlive `'2`
这是borrow 判断器的限制,还是有某种方式让我在这里try 做的事情实际上是不可靠的?有解决办法吗?