मुझे structs के लिए जीवनकाल पैरामीटर के साथ काम करने में कोई समस्या है। मैं 100% निश्चित नहीं हूं कि समस्या का वर्णन कैसे करें, लेकिन मैंने एक मामूली मामला बनाया जो मेरी संकलन समय त्रुटि दिखाता है।जंग जीवनकाल त्रुटि कंक्रीट जीवनकाल की उम्मीद है लेकिन बाध्य जीवनकाल पाया
struct Ref;
struct Container<'a> {
r : &'a Ref
}
struct ContainerB<'a> {
c : Container<'a>
}
trait ToC {
fn to_c<'a>(&self, r : &'a Ref) -> Container<'a>;
}
impl<'a> ToC for ContainerB<'a> {
fn to_c(&self, r : &'a Ref) -> Container<'a> {
self.c
}
}
त्रुटि मैं इस के साथ हो रही है
test.rs:16:3: 18:4 error: method `to_c` has an incompatible type for trait: expected concrete lifetime, but found bound lifetime parameter 'a
test.rs:16 fn to_c(&self, r : &'a Ref) -> Container<'a> {
test.rs:17 self.c
test.rs:18 }
test.rs:16:48: 18:4 note: expected concrete lifetime is the lifetime 'a as defined on the block at 16:47
test.rs:16 fn to_c(&self, r : &'a Ref) -> Container<'a> {
test.rs:17 self.c
test.rs:18 }
error: aborting due to previous error
मैं कई रूपों की कोशिश की है और सिर्फ इस बात को संकलित करने के लिए नहीं मिल सकता है। मुझे यहां एक और पोस्ट मिली (How to fix: expected concrete lifetime, but found bound lifetime parameter) लेकिन इसे हल करने की बजाय समस्या के आसपास मिलती प्रतीत होती है। मैं वास्तव में नहीं देख सकता कि समस्या क्यों उत्पन्न होती है। & चाल के माध्यम से रेफरी पारित की जा रही है, तो इसे सही काम करना चाहिए?
कोई विचार? पूरी सहायताके लिए शुक्रिया।
एक और फिक्स 'टीआईसी <'a> {fn to_c (& self, r: & 'a ref) -> कंटेनर <'a>; } '। – huon
ओह हाँ, और फिर कंटेनर'के लिए' impl <'a> TOC <'a> '। –
यह निश्चित रूप से बहुत कुछ मदद करता है और मेरे कुछ गलत विचारों को ठीक करता है (उदाहरण के लिए जीवनकाल छायांकन)! धन्यवाद। यह इस मामले को 100% तय करता है, लेकिन मैं इसे दूसरे पर लागू नहीं कर सकता। मैंने यहां उस प्रश्न को लिखा: http://stackoverflow.com/questions/24853111/rust-lifetime-error-expected-concrete-lifetime-part-2) – luke