@@ -224,10 +224,7 @@ impl<'cx, 'tcx> MirBorrowckCtxt<'cx, 'tcx> {
224224                } 
225225            } 
226226
227-             use_spans. var_span_label_path_only ( 
228-                 & mut  err, 
229-                 format ! ( "{} occurs due to use{}" ,  desired_action. as_noun( ) ,  use_spans. describe( ) ) , 
230-             ) ; 
227+             use_spans. var_path_only_subdiag ( & mut  err,  desired_action) ; 
231228
232229            if  !is_loop_move { 
233230                err. span_label ( 
@@ -404,10 +401,7 @@ impl<'cx, 'tcx> MirBorrowckCtxt<'cx, 'tcx> {
404401        let  used = desired_action. as_general_verb_in_past_tense ( ) ; 
405402        let  mut  err =
406403            struct_span_err ! ( self ,  span,  E0381 ,  "{used} binding {desc}{isnt_initialized}" ) ; 
407-         use_spans. var_span_label_path_only ( 
408-             & mut  err, 
409-             format ! ( "{} occurs due to use{}" ,  desired_action. as_noun( ) ,  use_spans. describe( ) ) , 
410-         ) ; 
404+         use_spans. var_path_only_subdiag ( & mut  err,  desired_action) ; 
411405
412406        if  let  InitializationRequiringAction :: PartialAssignment 
413407        | InitializationRequiringAction :: Assignment  = desired_action
@@ -673,16 +667,16 @@ impl<'cx, 'tcx> MirBorrowckCtxt<'cx, 'tcx> {
673667        let  move_spans = self . move_spans ( place. as_ref ( ) ,  location) ; 
674668        let  span = move_spans. args_or_use ( ) ; 
675669
676-         let  mut  err =
677-             self . cannot_move_when_borrowed ( span,  & self . describe_any_place ( place. as_ref ( ) ) ) ; 
678-         err. span_label ( borrow_span,  format ! ( "borrow of {} occurs here" ,  borrow_msg) ) ; 
679-         err. span_label ( span,  format ! ( "move out of {} occurs here" ,  value_msg) ) ; 
680- 
681-         borrow_spans. var_span_label_path_only ( 
682-             & mut  err, 
683-             format ! ( "borrow occurs due to use{}" ,  borrow_spans. describe( ) ) , 
670+         let  mut  err = self . cannot_move_when_borrowed ( 
671+             span, 
672+             borrow_span, 
673+             & self . describe_any_place ( place. as_ref ( ) ) , 
674+             & borrow_msg, 
675+             & value_msg, 
684676        ) ; 
685677
678+         borrow_spans. var_path_only_subdiag ( & mut  err,  crate :: InitializationRequiringAction :: Borrow ) ; 
679+ 
686680        move_spans. var_span_label ( 
687681            & mut  err, 
688682            format ! ( "move occurs due to use{}" ,  move_spans. describe( ) ) , 
@@ -724,22 +718,15 @@ impl<'cx, 'tcx> MirBorrowckCtxt<'cx, 'tcx> {
724718            borrow_span, 
725719            & self . describe_any_place ( borrow. borrowed_place . as_ref ( ) ) , 
726720        ) ; 
727-         borrow_spans. var_subdiag ( 
728-             & mut  err, 
729-             |var_span| { 
730-                 use  crate :: session_diagnostics:: CaptureVarCause :: * ; 
731-                 let  place = & borrow. borrowed_place ; 
732-                 let  desc_place = self . describe_any_place ( place. as_ref ( ) ) ; 
733-                 match  borrow_spans { 
734-                     UseSpans :: ClosureUse  {  generator_kind,  .. }  => match  generator_kind { 
735-                         Some ( _)  => BorrowUsePlaceGenerator  {  place :  desc_place,  var_span } , 
736-                         None  => BorrowUsePlaceClosure  {  place :  desc_place,  var_span } , 
737-                     } , 
738-                     _ => BorrowUsePlace  {  place :  desc_place,  var_span } , 
739-                 } 
740-             } , 
741-             "mutable" , 
742-         ) ; 
721+         borrow_spans. var_subdiag ( & mut  err,  Some ( borrow. kind ) ,  |kind,  var_span| { 
722+             use  crate :: session_diagnostics:: CaptureVarCause :: * ; 
723+             let  place = & borrow. borrowed_place ; 
724+             let  desc_place = self . describe_any_place ( place. as_ref ( ) ) ; 
725+             match  kind { 
726+                 Some ( _)  => BorrowUsePlaceGenerator  {  place :  desc_place,  var_span } , 
727+                 None  => BorrowUsePlaceClosure  {  place :  desc_place,  var_span } , 
728+             } 
729+         } ) ; 
743730
744731        self . explain_why_borrow_contains_point ( location,  borrow,  None ) 
745732            . add_explanation_to_diagnostic ( 
0 commit comments