Aha*_*bol 5 slice rust borrow-checker
当我写下这个:
fn add1(vc: &mut Vec<usize>) {
func1(vc, vc[0]);
}
fn func1(vc: &mut Vec<usize>, val: usize) {}
Run Code Online (Sandbox Code Playgroud)
Clippy 告诉我“写入&mut Vec而不是&mut [_]涉及一个切片可以做的新对象”。
但是,如果我将其切换为:
fn add1(vc: &mut Vec<usize>) {
func1(vc, vc[0]);
}
fn func1(vc: &mut [usize], val: usize) {}
Run Code Online (Sandbox Code Playgroud)
我得到“不能*vc作为不可变借用,因为它也作为可变借用 [E0502]”。
这是有道理的,但是为什么之前它会起作用呢?
另外,为什么 Clippy 给我错误的警告?