I have some nested structs and cannot create a back reference to the parent struct. An example:
struct Foo<'a> {
    parent: &'a Bar<'a>,
}
impl<'a> Foo<'a> {
    fn new(parent: &'a Bar) -> Self {
        Foo { parent: parent }
    }
    fn hello_world(&self) -> String {
        self.parent.hello().to_owned() + " world"
    }
}
struct Bar<'b> {
    child: Option<Foo<'b>>,
    data: &'static str,
}
impl<'b> Bar<'b> {
    fn new() -> Self {
        Bar {
            child: None,
            data: "hello",
        }
    }
    fn hello(&self) -> &str {
        self.data
    }
    fn get_foo(&self) -> Option<&Foo> {
        self.child.as_ref()
    }
}
fn main() {
    let bar = Bar::new();
    assert_eq!("hello", bar.hello());
    match bar.get_foo() {
        Some(foo) => assert_eq!("hello world", foo.hello_world()),
        None => (),
    }
}
How can I replace None with Some<Foo> with a reference to Bar? So far I'm not sure that it is possible.
 
     
     
    