नोट है कि इस सवाल का जवाब जंग का एक पूर्व 1.0 संस्करण से संबंधित है और 1.0 के लिए लागू नहीं होता। विशेष रूप से, std::iter::range
और std::iter::range_inclusive
हटा दिए गए थे। range
और range_inclusive
है, जो सीमा में संख्या की सूची तैयार iterators वापसी [कम:
जंग 1.0.0-अल्फा के रूप में, सबसे आसान तरीका है यह पूरा करने के मॉड्यूल std::iter
में प्रदान की सुविधा कार्यों का उपयोग करने के लिए है , उच्च) या [निम्न, उच्च] क्रमशः।
इसके अलावा, आप collect
विधि का उपयोग कर एक पुनरावर्तक से एक सदिश का निर्माण कर सकते हैं:
use std::iter::range_inclusive;
let first_hundred: Vec<i32> = range_inclusive(1, 100).collect();
println!("upper bound inclusive: {:?}, exclusive: {:?}",
first_hundred,
range(101, 201).collect::<Vec<_>>());
ध्यान दें कि collect
के रिटर्न मान अपने प्रकार स्पष्ट रूप से ऊपर दोनों इसके उपयोग में निर्दिष्ट है। आम तौर पर, जंग कम्पाइलर स्पष्ट विनिर्देश के बिना अभिव्यक्ति के प्रकारों का अनुमान लगा सकता है, लेकिन collect
इस मामले में पूरी तरह से अनुमानित नहीं किया जा सकता है, क्योंकि इस मामले में यह एक ठोस प्रकार का अनुमान नहीं लगा सकता है जो विशेषता को लागू करता है FromIterator<A>
, वापसी का प्रकार collect
।
जेनेरिक रिटर्न वैल्यू के प्रकार को let
परिभाषा विवरण या function::<Type>()
सिंटैक्स का उपयोग करके इनलाइन को स्पष्ट प्रकार के रूप में निर्दिष्ट किया जा सकता है। चूंकि अनुमान FromIterator<A>
को लागू करने वाले ठोस प्रकार को जानने के कारण विफल रहता है, इसलिए यह संभव है कि, सामान्य प्रकार को स्पष्ट रूप से निर्दिष्ट करते समय, अनुमानित तर्कों के लिए "छेद" छोड़ने के लिए, अनुमानित किया जाएगा, _
द्वारा दर्शाया गया है। यह दूसरा अभिव्यक्ति Vec<_>
में — ऊपर collect
करने के लिए कॉल के साथ किया जाता है, यह स्पष्ट रूप से निर्दिष्ट है कि कंटेनर collect
से तत्वों प्राप्त एक Vec<T>
है, लेकिन संकलक का पता लगा लेता क्या सही प्रकार T
होना चाहिए। वर्तमान में, जिनके प्रकारों को अनिर्दिष्ट छोड़ दिया गया है और अनुमानित नहीं किया जा सकता है, वे डिफ़ॉल्ट रूप से i32
(32-बिट मशीन पूर्णांक) पर आते हैं।
ध्यान रखें कि हास्केल के आलसी मूल्यांकन के कारण, इसकी सूची प्रकार में वास्तव में एक तत्व और एक कार्य होता है जो शेष सूची (यानी, अगला तत्व और * अगला * फ़ंक्शन, और इसी तरह) का उत्पादन जारी रखने के लिए होता है, जिसका अर्थ यह है कि कई तरीकों से जंग के 'इटरेटर' प्रकार वास्तव में 'Vec' की तुलना में हास्केल की '[ए]' के लिए एक करीबी मैच हैं। –
glaebhoerl