1
イテレータのアイテムを一度にマップしようとしています。このような何か:イテレータをn個のアイテムに一度にマップする
let a = vec![1, 2, 3, 4];
let b = a.iter().map2(|i, j| i + j);
b.collect()
はその後、これを達成するための簡単な方法はありb = [3, 7]
もたらすであろうか?
イテレータのアイテムを一度にマップしようとしています。このような何か:イテレータをn個のアイテムに一度にマップする
let a = vec![1, 2, 3, 4];
let b = a.iter().map2(|i, j| i + j);
b.collect()
はその後、これを達成するための簡単な方法はありb = [3, 7]
もたらすであろうか?
記載されていません。あなたは「各サブセット合計」「互いに素な部分集合のイテレータに分割VEC」にそれを打破し、する必要があります:a
は、一般的なイテレータがあるときに、これが機能しないこと
let a = vec![1, 2, 3, 4];
let b = a.chunks(2).map(|chunk| chunk.iter().sum::<i32>());
println!("b = {:?}", b.collect::<Vec<_>>());
注意を(それがあることに依存しています
use itertools::Itertools;
let a = vec![1, 2, 3, 4];
let a = a.iter().cloned(); // we can't rely on a being a Vec any more.
let b = (&a.chunks(2)).into_iter()
.map(|chunk| chunk.sum::<i32>())
.collect::<Vec<_>>();
println!("b = {:?}", b);
いかなる理由が 'Iterator'に' .SUMを() 'を使用しない:スライス)、あなたはそれが
itertools
クレートを使用して仕事を得ることができますが? – loganfsmyth@loganfsmyth:2つ。まず、型推論が悪く、コードに明示的に注釈を付ける必要があります。第二に、私は 'Iterator :: sum'に先立つので、' fold 'がうまくいく時に存在することを決して思い出せません。 –
十分なフェア! :D – loganfsmyth