use std::cell::RefCell;
pub trait TDataInstance<'a>
{
fn set_parent(&'a mut self,parent:& RefCell<dyn TDataInstance<'a> +'a >);
}
pub struct DataInstanceCore<'a>
{
pub parent:Option<&'a RefCell<dyn TDataInstance<'a> >>,
}
pub struct StructureDataInstance<'a>
{
pub instance_core:DataInstanceCore<'a>,
}
impl<'a> TDataInstance<'a> for StructureDataInstance<'a>
{
fn set_parent(&'a mut self,parent:& RefCell< dyn TDataInstance<'a> +'a >)
{
self.instance_core.parent = Some(parent);
}
}
fn main()
{
let parent_instance:StructureDataInstance=StructureDataInstance{
instance_core:DataInstanceCore{
parent:Option::None
},
};
let mut child_instance:StructureDataInstance=StructureDataInstance{
instance_core:DataInstanceCore{
parent:Option::None
},
};
let parent = RefCell::new(parent_instance);
child_instance.set_parent(&parent);
}
Errors:
Compiling playground v0.0.1 (/playground)
error: lifetime may not live long enough
--> src/main.rs:25:41
|
19 | impl<'a> TDataInstance<'a> for StructureDataInstance<'a>
| -- lifetime `'a` defined here
...
25 | self.instance_core.parent = Some(parent);
| ^^^^^^ cast requires that `'a` must outlive `'static`
error: lifetime may not live long enough
--> src/main.rs:25:41
|
22 | fn set_parent(&'a mut self,parent:& RefCell< dyn TDataInstance<'a> +'a >)
| - let's call the lifetime of this reference `'1`
...
25 | self.instance_core.parent = Some(parent);
| ^^^^^^ cast requires that `'1` must outlive `'static`
help: replace `'a` with `'static`
error: could not compile `playground` due to 2 previous errors
Hi, i am a new ruster and would like to study Rust, but when I use trait object and get above error, can someone help me with this, thanks.