2017-10-21 1 views

답변

6

Iterator trait에는 이러한 도우미 메서드가 없습니다. 그러나, 그것을 할 수있는 두 가지 방법이 있습니다 :

  1. 사용이 [T]::chunks() method (직접 Vec<T> 호출 할 수있다). 그러나 작은 차이가 있습니다. 즉, None을 생성하지 않지만 마지막 반복은 더 작은 조각을 생성합니다.

    Example

    :

    let my_vec = (0..25).collect::<Vec<_>>(); 
    
    for chunk in my_vec.chunks(10) { 
        println!("{:02?}", chunk); 
    } 
    

    결과 :

    [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] 
    [10, 11, 12, 13, 14, 15, 16, 17, 18, 19] 
    [20, 21, 22, 23, 24] 
    
  2. the crate itertools에서 Itertools::chunks() method를 사용합니다. 이 상자는 표준 라이브러리의 Iterator 형질을 확장합니다. 따라서이 chunks() 메서드는 모든 반복자에서 작동합니다! 사용법은 일반적으로 사용하기 위해 약간 더 복잡합니다. 이것은 위에서 설명한 방법과 동일한 동작을합니다. 마지막 반복에서 청크는 None을 포함하는 대신에 작아집니다.

    Example :

    extern crate itertools; 
    use itertools::Itertools; 
    
    for chunk in &(0..25).chunks(10) { 
        println!("{:02?}", chunk.collect::<Vec<_>>()); 
    } 
    

    결과 : 코드에서

    • ,:

      [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] 
      [10, 11, 12, 13, 14, 15, 16, 17, 18, 19] 
      [20, 21, 22, 23, 24] 
      

도 있다는 점 유의 하시길 바랍니다님이 기대하는대로하지 않습니다! 벡터는 이고 하나는입니다. 해당 요소는 Range입니다. 위의 예에서이 문제를 해결했습니다.

  • 녹에서는 변수의 이름이 snake_case입니다.
  • +0

    감사합니다. 첫 번째 솔루션은 내가 찾고 있던 솔루션이었습니다. – Teo

    관련 문제