pub struct CrateId {
    local_path: String,
    junk: String,
}

impl CrateId {
    fn new(s: &str) -> CrateId {
        CrateId { local_path: s.to_string(), junk: "wutevs".to_string() }
    }
}

pub fn remove_package_from_database() {
    let mut lines_to_use: Vec<&CrateId> = Vec::new();
    //~^ NOTE `lines_to_use` declared here, outside of the closure body
    let push_id = |installed_id: &CrateId| {
        //~^ NOTE `installed_id` is a reference that is only valid in the closure body
        lines_to_use.push(installed_id);
        //~^ ERROR borrowed data escapes outside of closure
        //~| NOTE `installed_id` escapes the closure body here
    };
    list_database(push_id);

    for l in &lines_to_use {
        println!("{}", l.local_path);
    }
}

pub fn list_database<F>(mut f: F)
where
    F: FnMut(&CrateId),
{
    let stuff = ["foo", "bar"];

    for l in &stuff {
        f(&CrateId::new(*l));
    }
}

pub fn main() {
    remove_package_from_database();
}
