Vector 可以收集a&;来自迭代器的mut?
我正在努力学习更多关于所有权的知识。下面是一些不起作用的代码,因为Vector 可以收集a&;来自迭代器的mut?,vector,iterator,rust,ownership,Vector,Iterator,Rust,Ownership,我正在努力学习更多关于所有权的知识。下面是一些不起作用的代码,因为collect不允许您获取&mut字符串: fn search(word: &str, data: &mut Vec<String>) { data = data .iter() .filter(|x| x.contains(word)) .collect::<&mut Vec<String>>(); } fn搜索
collect
不允许您获取&mut字符串
:
fn search(word: &str, data: &mut Vec<String>) {
data = data
.iter()
.filter(|x| x.contains(word))
.collect::<&mut Vec<String>>();
}
fn搜索(单词:&str,数据:&mut-Vec){
数据=数据
.国际热核实验堆(iter)
.filter(|x | x.contains(word))
收集::();
}
我想我可以返回一个克隆版本,但这是唯一/首选的方法吗?不,不可能。要实现这一点,
collect
必须返回对其创建的内容的引用,然后
您正在寻找:
另见:
fn search(word: &str, data: &mut Vec<String>) {
data.retain(|x| x.contains(word));
}
fn search<'a>(word: &str, data: &'a [String]) -> Vec<&'a String> {
data.iter().filter(|x| x.contains(word)).collect()
}