2015-03-09 7 views
5

मुझे जंग में वास्तव में कठिन समय fathoming पॉइंटर्स मिल रहा है। यह कोड संकलित नहीं होगा क्योंकि: wrong number of lifetime parameters: expected 1, found 0 [E0107]। इसका क्या मतलब है?जीवनकाल पैरामीटर की गलत संख्या: अपेक्षित 1, 0

struct Planet<'a> { 
    name: &'a str, 
    radius_km: i32, 
    surface_area_km2: i64, 
    orbital_period_days: i32, 
    distance_from_sun: i64 
} 

fn mercury() -> Planet { 
    Planet { 
     name: "Mercury", 
     radius_km: 2_440, 
     surface_area_km2: 74_800_000, 
     orbital_period_days: 88, 
     distance_from_sun: 57_910_000 
    } 
} 

fn main() { 
    let mercury = Box::new(mercury()); 
    println!("{}",mercury.name) 
} 
+1

ध्यान दें कि त्रुटि संदेश * शामिल * समस्या लाइन और यहां तक ​​कि एक अवधि शामिल है ('^ ~~~') [शो जहां समस्या है में मदद करता है] कि (http://is.gd/poWU1h) । – Shepmaster

उत्तर

6

यह कह रहा है कि संरचना के लिए आपकी परिभाषा में एक प्रकार पैरामीटर शामिल है और इसलिए, आपके फ़ंक्शन को एक बनाना चाहिए।

struct Planet<'a>{ 
    name : &'a str, 
    radius_km: i32, 
    surface_area_km2: i64, 
    orbital_period_days: i32, 
    distance_from_sun: i64 
} 

fn mercury<'a>()->Planet<'a>{ 
    Planet{ 
     name:"Mercudy", 
     radius_km: 2_440, 
     surface_area_km2: 74_800_000, 
     orbital_period_days: 88, 
     distance_from_sun: 57_910_000 
    } 
} 

fn main(){ 
    let planet = mercury(); 
    println!("{}", planet.name) 
} 
+1

जबकि 'ए' काम करता है, इस मामले में आप 'स्थिर' भी चुन सकते हैं, क्योंकि स्ट्रिंग प्रोग्राम के पूरे जीवनकाल के लिए रहता है। – Shepmaster

+0

व्यक्तिगत रूप से, मैंने इसे 'स्ट्रिंग' के बजाय स्ट्रिंग कर दिया होगा, लेकिन यह सवाल नहीं पूछा गया है। उत्सुक है कि दो विकल्पों के बीच क्या अंतर होगा। –

+1

किस दो विकल्पों के बीच? यदि आप स्ट्रिंग का उपयोग करते हैं, तो जब भी आप 'पारा' कहते हैं, तो आप मेमोरी आवंटित करेंगे, जिसे वास्तव में यहां जरूरी नहीं है। यदि आप 'पारा' पर आजीवन पैरामीटर के साथ रहते हैं, तो 'पारा 'के * कॉलर * का फैसला करता है कि जीवनकाल' ए 'क्या होगा। यह ठीक है, क्योंकि 'स्थिर' जीवनकाल हमेशा इसे पार कर जाएगा। रिटर्न लाइफटाइम को 'स्थिर' के रूप में चिह्नित करना इस मामले के लिए अधिक लचीला और उपयोगी होता है। – Shepmaster

संबंधित मुद्दे