【发布时间】:2021-07-27 12:33:20
【问题描述】:
警告:我是 Rust 新手,请原谅我的无知。
我有一个接受向量引用的函数。然后它从该向量创建一个迭代器并对其值进行处理。
代码:
fn new(args: &Vec<String>) -> Result<Config, &str> {
let mut args_iter = args.iter(); //create iterator
args_iter.next(); //skip the 0th item
let query = match args_iter.next() {
Some(arg) => *arg, //BREAKS
None => return Err("no query"),
};
let file = match args_iter.next() {
Some(arg) => arg.clone(), //WORKS
None => return Err("no file"),
};
//more stuff
}
现在我收到此错误:
move occurs because `*arg` has type `String`, which does not implement the `Copy` trait
如果我将*arg 更改为arg.clone(),问题就会解决。
有人能帮我理解为什么吗?我认为通过在函数内部创建迭代器,函数拥有迭代器,并且应该能够随心所欲地改变/移动其值?
【问题讨论】:
-
"error[E0412]: 在这个范围内找不到类型
Config" => minimal reproducible example -
@Stargateur 这很有用,谢谢。未来会牢记
标签: rust iterator borrow-checker