में बजाय एक सरल इटरेटर इंटरफ़ेस रिटर्निंग एक मानचित्र की मैं इस लिखने के लिए करना चाहते हैं:जंग
fn fibs() -> std::iter::Iterator<int> {
return std::iter::iterate((1i, 1i), |(a, b)| { (b, a + b) }).map(|(a, _)| a)
}
लेकिन अगर मैं ऐसा, मैं इस त्रुटि मिलती है:
error: explicit lifetime bound required
fn fibs() -> std::iter::Iterator<int> {
^^^^^^^^^^^^^^^^^^^^^^^^
अगर मैं बजाय, पूर्ण इंटरफ़ेस लिखें, यह संकलित करता है:
fn fibs() -> std::iter::Map<'static, (int, int), int, std::iter::Iterate<'static, (int, int)>> {
return std::iter::iterate((1i, 1i), |(a, b)| { (b, a + b) }).map(|(a, _)| a)
}
क्या सरल इंटरफ़ेस वापस करने का कोई तरीका है?
इटरेटर एक विशेषता है और नहीं एक प्रकार है। मुझे जंग के बारे में ज्यादा जानकारी नहीं है लेकिन मुझे लगता है कि आपको इसे बॉक्स में पैक करना होगा। अनबॉक्स किए गए अमूर्त प्रकारों को वापस करने के लिए हमें इसकी आवश्यकता है: https://github.com/rust-lang/rfcs/pull/105 – Simon