【发布时间】:2020-04-20 04:13:21
【问题描述】:
我有以下:
fn main() {
let foo = vec![];
let mut bar = vec![1, 2].iter().map(|a| a + 1).collect::<Vec<_>>();
foo.append(&bar);
}
当我运行代码 sn-p 时,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