| fn bindings() { |
| let err = match (place_desc, explanation) { |
| ( |
| Some(ref name), |
| BorrowExplanation::MustBeValidFor { |
| category: |
| category @ (ConstraintCategory::Return |
| | ConstraintCategory::CallArgument |
| | ConstraintCategory::OpaqueType), |
| from_closure: false, |
| ref region_name, |
| span, |
| .. |
| }, |
| ) if borrow_spans.for_coroutine() | borrow_spans.for_closure() => self |
| .report_escaping_closure_capture( |
| borrow_spans, |
| borrow_span, |
| region_name, |
| category, |
| span, |
| &format!("`{}`", name), |
| "function", |
| ), |
| ( |
| ref name, |
| BorrowExplanation::MustBeValidFor { |
| category: ConstraintCategory::Assignment, |
| from_closure: false, |
| region_name: |
| RegionName { |
| source: RegionNameSource::AnonRegionFromUpvar(upvar_span, ref upvar_name), |
| .. |
| }, |
| span, |
| .. |
| }, |
| ) => self.report_escaping_data(borrow_span, name, upvar_span, upvar_name, span), |
| (Some(name), explanation) => self.report_local_value_does_not_live_long_enough( |
| location, |
| &name, |
| &borrow, |
| drop_span, |
| borrow_spans, |
| explanation, |
| ), |
| (None, explanation) => self.report_temporary_value_does_not_live_long_enough( |
| location, |
| &borrow, |
| drop_span, |
| borrow_spans, |
| proper_span, |
| explanation, |
| ), |
| }; |
| } |