I have two structs. App and Item.
What I want to achieve is to store an Item in the items vector of the App struct by passing a mutable reference to the Items constructor.
pub struct App<'a> {
    items: Vec<&'a Item>
}
impl<'a> App<'a> {
    pub fn new() -> App<'a> {
        App { items: Vec::new() }
    }
    pub fn register_item(&mut self, item: &'a Item) {
        self.items.push(item);
    }
}
pub struct Item;
impl Item {
    pub fn new(app: &mut App) -> Item {
        let item = Item;
        app.register_item(&item);
        item
    }
}
fn main() {
    let mut app = App::new();
    let item = Item::new(&mut app);;
}
The code thows the following error:
test.rs:8:28: 8:32 error: `item` does not live long enough
test.rs:8         app.register_item(&item);
Is there any way to do this?
 
    