2017-10-24 5 views

答えて

3

記載されていません。あなたは「各サブセット合計」「互いに素な部分集合のイテレータに分割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); 
+0

いかなる理由が 'Iterator'に' .SUMを() 'を使用しない:スライス)、あなたはそれがitertoolsクレートを使用して仕事を得ることができますが? – loganfsmyth

+0

@loganfsmyth:2つ。まず、型推論が悪く、コードに明示的に注釈を付ける必要があります。第二に、私は 'Iterator :: sum'に先立つので、' fold 'がうまくいく時に存在することを決して思い出せません。 –

+0

十分なフェア! :D – loganfsmyth

関連する問題