#![allow(dead_code)] struct Tableau<'a, MP> { provider: &'a MP, } impl<'adapted_matrix_provider, 'original_data, MP> Tableau<'adapted_matrix_provider, AdaptedMatrixProvider<'original_data, MP>> { fn provider(&self) -> &'adapted_matrix_provider AdaptedMatrixProvider { self.provider } } struct AdaptedMatrixProvider<'a, T> { original_problem: &'a T, } impl<'a, T> AdaptedMatrixProvider<'a, T> { fn clone_with_extra_bound(&self) -> Self { AdaptedMatrixProvider { original_problem: self.original_problem } } } fn create_and_solve_subproblems<'data_provider, 'original_data, MP>( tableau: Tableau<'data_provider, AdaptedMatrixProvider<'original_data, MP>>, ) { let _: AdaptedMatrixProvider<'original_data, MP> = tableau.provider().clone_with_extra_bound(); //~^ ERROR: lifetime may not live long enough //~| ERROR: `tableau` does not live long enough } //~ ERROR `main` function not found in crate