如何修复此 clippy 警告(无需收集)
How to fix this clippy warning (needless collect)
我很难修复 needless collect clippy warning。
pub fn import_selection(packages: &mut Vec<PackageRow>) -> io::Result<()> {
let file = fs::File::open("uad_exported_selection.txt")?;
let reader = BufReader::new(file);
let imported_selection: Vec<String> = reader
.lines()
.map(|l| l.expect("Could not exported selection"))
.collect();
for (i,p) in packages.iter_mut().enumerate() {
if imported_selection.contains(&p.name) {
p.selected = true;
...
} else {
p.selected = false;
}
}
Ok(())
}
我尝试直接从迭代器中使用 any()
,它编译但似乎不起作用(它没有找到任何应该找到的东西)
在这种情况下真的可以删除收集吗?
这是一个 known issue with current Clippy. It tries to point out that collecting an iterator first and then calling contains()
, len()
, etc. on the collection is usually unnecessary. Yet current Clippy does not take into account,在您的情况下,collect()
的结果在循环期间被多次使用,从而避免了每次迭代都重新执行 lines().map()
-迭代器那个循环。
这是误报。
您可以用 #[allow(clippy:needless_collect)]
标记方法或函数以抑制 lint。
我很难修复 needless collect clippy warning。
pub fn import_selection(packages: &mut Vec<PackageRow>) -> io::Result<()> {
let file = fs::File::open("uad_exported_selection.txt")?;
let reader = BufReader::new(file);
let imported_selection: Vec<String> = reader
.lines()
.map(|l| l.expect("Could not exported selection"))
.collect();
for (i,p) in packages.iter_mut().enumerate() {
if imported_selection.contains(&p.name) {
p.selected = true;
...
} else {
p.selected = false;
}
}
Ok(())
}
我尝试直接从迭代器中使用 any()
,它编译但似乎不起作用(它没有找到任何应该找到的东西)
在这种情况下真的可以删除收集吗?
这是一个 known issue with current Clippy. It tries to point out that collecting an iterator first and then calling contains()
, len()
, etc. on the collection is usually unnecessary. Yet current Clippy does not take into account,在您的情况下,collect()
的结果在循环期间被多次使用,从而避免了每次迭代都重新执行 lines().map()
-迭代器那个循环。
这是误报。
您可以用 #[allow(clippy:needless_collect)]
标记方法或函数以抑制 lint。