gpt4 book ai didi

rust - 收集后Vec变异性不匹配

转载 作者:行者123 更新时间:2023-12-03 11:41:24 30 4
gpt4 key购买 nike

我有以下几点:

fn main() {
let foo = vec![];
let mut bar = vec![1, 2].iter().map(|a| a + 1).collect::<Vec<_>>();
foo.append(&bar);
}

当我运行代码片段时,Rust提示 bar不可变:

error[E0308]: mismatched types
--> src/main.rs:4:16
|
4 | foo.append(&bar);
| ^^^^ types differ in mutability
|
= note: expected mutable reference `&mut std::vec::Vec<_>`
found reference `&std::vec::Vec<_>`

据我了解,我需要对要添加的 Vec进行可变引用,因为 Vec::append 的类型签名为:

fn append(&mut self, other: &mut Vec<T>)


但是,在我看来, bar对于提供的关键字应该是可变的。

是否可以在对 collect的调用之后追加?这里发生了什么?
  • Rust游乐场链接:https://play.rust-lang.org/?gist=2ea0800ce827fce9b8721255f00e1422
  • 最佳答案

    bar确实是可变的,但在下一行中,它是通过&bar不变地借用的。您可以通过以下方式解决此错误:

    foo.append(&mut bar);

    关于rust - 收集后Vec变异性不匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61315019/

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