我想合并两个引用向量,并将它们转换为一个值的向量,而不消耗迭代器。
情况:
通过对特定组合进行迭代来生成向量。(一个向量中的2个元素,另一个向量中的2个元素)
- 编码:
use core::iter::Iterator;
use itertools::Itertools;
fn main() {
let vec_a: Vec<u8> = vec![1, 2, 3];
let vec_b: Vec<u8> = vec![4, 5, 6];
// a: Vec<&u8>
for a in vec_a.iter().combinations(2) {
// b: Vec<&u8>
for b in vec_b.iter().combinations(2) {
// c: Vec<u8> <- a + b
let c: Vec<u8> = a.clone().into_iter().chain(b).cloned().collect();
println!("a: {:?}, b: {:?}, c: {:?}", a, b, c);
}
}
}
- 预期输出:
a: [1, 2], b: [4, 5], c: [1, 2, 4, 5]
a: [1, 2], b: [4, 6], c: [1, 2, 4, 6]
a: [1, 2], b: [5, 6], c: [1, 2, 5, 6]
a: [1, 3], b: [4, 5], c: [1, 3, 4, 5]
a: [1, 3], b: [4, 6], c: [1, 3, 4, 6]
a: [1, 3], b: [5, 6], c: [1, 3, 5, 6]
a: [2, 3], b: [4, 5], c: [2, 3, 4, 5]
a: [2, 3], b: [4, 6], c: [2, 3, 4, 6]
a: [2, 3], b: [5, 6], c: [2, 3, 5, 6]
附言
在发布问题之前,我阅读了下面的链接。然而,这个问题的答案消耗了Vec
和它的迭代器,所以它在这种情况下不起作用。
Best way to concatenate vectors in Rust
1条答案
按热度按时间rbpvctlc1#
感谢@ChayimFriedman。
有一些方法可以做到这一点。
*无消耗
*含消耗量