我想要不相交的结果。这是我能想到的最好的:
for rem in &remove_vec {
orig_vec.retain(|i| !i.eq(rem));
}
您正在使用错误的工具来完成这项工作。相反,将要删除的项目转换为集合,BTreeSet
或者HashSet
:
use std::{collections::BTreeSet, iter::FromIterator};
fn demo<T>(mut items: Vec<T>, to_remove: Vec<T>) -> Vec<T>
where
T: std::cmp::Ord,
{
let to_remove = BTreeSet::from_iter(to_remove);
items.retain(|e| !to_remove.contains(e));
items
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句