gpt4 book ai didi

rust - 如何引用可变切片

转载 作者:行者123 更新时间:2023-12-03 11:26:29 25 4
gpt4 key购买 nike

<分区>

我想通过可变引用更新一个切片。

虽然这确实适用于不可变切片:

fn shrink(value: &mut &[u8]) {
*value = &value[0..2];
}

fn main() {
let a = [0; 4];
let mut a_slice: &[u8] = &a;
shrink(&mut a_slice);
println!("{:?}", a_slice);
}

它不适用于可变的:

fn shrink<'a: 'b, 'b>(value: &'a mut &'b mut [u8]) {
*value = &mut value[0..2];
}

fn main() {
let mut a = [0; 4];
let mut a_slice: &mut [u8] = &mut a;
shrink(&mut a_slice);
println!("{:?}", a_slice);
}

错误信息:

error[E0502]: cannot borrow `a_slice` as immutable because it is also borrowed as mutable
--> src/main.rs:8:22
|
7 | shrink(&mut a_slice);
| ------------ mutable borrow occurs here
8 | println!("{:?}", a_slice);
| ^^^^^^^
| |
| immutable borrow occurs here
| mutable borrow later used here

我知道有一种方法可以通过直接返回一个子切片来更新切片。

但是有没有一种方法可以通过可变引用重新引用可变切片?

问题类似于this one ,但我不明白是什么让它如此不同,所提出的解决方案不起作用。

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com