diff --git a/compiler/rustc_infer/src/infer/error_reporting/nice_region_error/different_lifetimes.rs b/compiler/rustc_infer/src/infer/error_reporting/nice_region_error/different_lifetimes.rs index 8022cd01f87b1993b4d68f7a30093dcba5209c6e..d7e88d02595e4d5e7bbf9f4d8c3514b0c9749af1 100644 --- a/compiler/rustc_infer/src/infer/error_reporting/nice_region_error/different_lifetimes.rs +++ b/compiler/rustc_infer/src/infer/error_reporting/nice_region_error/different_lifetimes.rs @@ -167,7 +167,9 @@ fn suggest_adding_lifetime_params( if let Some(anon_reg) = self.tcx().is_suitable_region(sub) { let hir_id = self.tcx().hir().local_def_id_to_hir_id(anon_reg.def_id); - let generics = match self.tcx().hir().get(hir_id) { + let node = self.tcx().hir().get(hir_id); + let is_impl = matches!(&node, hir::Node::ImplItem(_)); + let generics = match node { hir::Node::Item(&hir::Item { kind: hir::ItemKind::Fn(_, ref generics, ..), .. @@ -209,8 +211,12 @@ fn suggest_adding_lifetime_params( suggestions.push(new_param_suggestion); } + let mut sugg = String::from("consider introducing a named lifetime parameter"); + if is_impl { + sugg.push_str(" and update trait if needed"); + } err.multipart_suggestion( - "consider introducing a named lifetime parameter", + sugg.as_str(), suggestions, Applicability::MaybeIncorrect, );