提问人:Aharon Sambol 提问时间:2/9/2023 最后编辑:LeopardSharkAharon Sambol 更新时间:2/14/2023 访问量:141
为什么传递向量有效但切片不起作用?
Why does passing a vector work but not a slice?
问:
当我写这篇文章时:
fn add1(vc: &mut Vec<usize>) {
func1(vc, vc[0]);
}
fn func1(vc: &mut Vec<usize>, val: usize) {}
Clippy 告诉我,“写作而不是涉及一个新对象,而切片就可以了”。&mut Vec
&mut [_]
但是,如果我将其切换到这个:
fn add1(vc: &mut Vec<usize>) {
func1(vc, vc[0]);
}
fn func1(vc: &mut [usize], val: usize) {}
我得到“不能借用为不可变的,因为它也被借用为可变的 [E0502]”。*vc
这是有道理的,但为什么它以前有效呢?
另外,为什么 Clippy 会给我不正确的警告?
答: 暂无答案
评论
&mut Vec<usize>
&mut [usize]
as_mut()
&mut [usize]
vc
vc