在加密问题中,为了减少冗长程度,我将v
的一部分“命名”为block
,对其进行了一些处理,但随后尝试验证的结果{{1}上整个上的do_stuff
:
v
借阅检查员抱怨:
fn x() {
let mut v = vec![0; 32];
let block = &mut v[0..16];
do_stuff(block);
check_stuff(&v);
do_stuff(block);
}
fn do_stuff(_: &mut [i32]) {}
fn check_stuff(_: &[i32]) {}
我知道这是要提供的保证。但是,假设我知道自己在做什么,是否有一种惯用的方式为切片指定名称,而不必每次使用error[E0502]: cannot borrow `v` as immutable because it is also borrowed as mutable
--> src/lib.rs:6:17
|
3 | let block = &mut v[0..16];
| - mutable borrow occurs here
...
6 | check_stuff(&v);
| ^^ immutable borrow occurs here
7 | do_stuff(block);
| ----- mutable borrow later used here
或进行复制?