Rust 迭代向量元素的组合并操纵元素
我想得到向量元素的所有组合。我正在使用itertools的compositions()函数。这很好,但现在我想操纵向量的元素。因此,我需要一个迭代器,它生成向量元素的可变引用 我的代码基本上如下所示:Rust 迭代向量元素的组合并操纵元素,rust,Rust,我想得到向量元素的所有组合。我正在使用itertools的compositions()函数。这很好,但现在我想操纵向量的元素。因此,我需要一个迭代器,它生成向量元素的可变引用 我的代码基本上如下所示: let mut v: Vec<MyType> = vec![]; for vpair in v.iter_mut().combinations(2) { vpair.first().unwrap().do_something(vpair.last().unwrap()); }
let mut v: Vec<MyType> = vec![];
for vpair in v.iter_mut().combinations(2) {
vpair.first().unwrap().do_something(vpair.last().unwrap());
}
让mut v:Vec=Vec![];
用于v.iter_mut()组合中的vpair(2){
vpair.first().unwrap().do_某事(vpair.last().unwrap());
}
通过调用do\u something()
我想在每次迭代中操作vpair.first().unwrap()
和vpair.last().unwrap()
我收到的错误是:
trait std::clone::clone未为&mut MyType实现
我能设法解决这个问题吗?还是我完全走错了方向?不,你不能这样做。定义为
fn组合(self,k:usize)->组合
哪里
自我:大小,
Self::项:克隆,
它说底层迭代器的项需要是Clone
。毕竟,根据定义,所有组合都多次包含每个项目。但因为它是唯一的锈
OTOH,如果您的MyType
本身就是Clone
,您可以尝试:
让mut v:Vec=Vec![];
用于vpair in v.in_iter()组合(2){
vpair.first().unwrap().do_某事(vpair.last().unwrap());
}
由于您拥有从返回到\u iter
的项目,因此您可以对其执行任何操作。但每一轮循环都会操纵它们的独立克隆,这可能是你想要做的,也可能不是