rust - क्या वेक्टरों के साथ 10 के समूह में वेक्टर को विभाजित करना संभव है?



(1)

मैंने अपना let myVec = vec![0..25] और मैं 10 के समूह के myVec में myVec को विभाजित करना चाहूंगा:

[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,25,None,None,None,None]

क्या यह संभव है कि यह जंग में आईटरर्स के साथ?


Iterator विशेषता पर कोई ऐसी सहायक विधि सीधे नहीं है हालांकि, ऐसा करने के दो मुख्य उपाय हैं:

  1. [T]::chunks() विधि [T]::chunks() विधि का उपयोग करें (जिसे एक Vec<T> सीधे कहा जा सकता है)। हालांकि, इसमें एक मामूली अंतर है: यह None नहीं पैदा करेगा, लेकिन अंतिम पुनरावृत्ति एक छोटे टुकड़े पैदा करती है।

    उदाहरण :

    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. टोकरा itertools से Itertools::chunks() विधि Itertools::chunks() प्रयोग करें यह टोकरा मानक लाइब्रेरी से Iterator गुण प्रदान करता है। तो यह chunks() विधि सभी iterators के साथ काम करता है! ध्यान दें कि सामान्य होने के लिए उपयोग थोड़ा अधिक जटिल है। इसके ऊपर वर्णित विधि के समान ही व्यवहार है: अंतिम पुनरावृत्ति में, None न होने के बजाय का हिस्सा छोटा होगा

    उदाहरण :

    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]

कृपया यह भी ध्यान रखें कि:

  • आपके कोड में, vec![0..25] ऐसा नहीं कर रहा है जो आपको करना चाहिए! यह एक तत्व के साथ एक वेक्टर बनायेगा वह तत्व एक Range मैंने इसे ऊपर दिए गए उदाहरणों में तय किया
  • जंग में, चर में snake_case नाम हैं




rust