File tree Expand file tree Collapse file tree 2 files changed +52
-0
lines changed 
src/test/ui/closures/2229_closure_analysis Expand file tree Collapse file tree 2 files changed +52
-0
lines changed Original file line number Diff line number Diff line change 1+ // edition:2021 
2+ 
3+ enum  SingleVariant  { 
4+     A 
5+ } 
6+ 
7+ struct  TestStruct  { 
8+     x :  i32 , 
9+     y :  i32 , 
10+     z :  i32 , 
11+ } 
12+ 
13+ fn  main ( )  { 
14+     let  sv = SingleVariant :: A ; 
15+     let  condition = true ; 
16+     // sv should not be captured as it is a SingleVariant 
17+     let  _a = || { 
18+         match  sv { 
19+             SingleVariant :: A  if  condition => ( ) , 
20+             _ => ( ) 
21+         } 
22+     } ; 
23+     let  mut  mut_sv = sv; 
24+     _a ( ) ; 
25+ 
26+     // ts should be captured 
27+     let  ts = TestStruct  {  x :  1 ,  y :  1 ,  z :  1  } ; 
28+     let  _b = || {  match  ts { 
29+         TestStruct {  x :  1 ,  .. }  => ( ) , 
30+         _ => ( ) 
31+     } } ; 
32+     let  mut  mut_ts = ts; 
33+     //~^ ERROR: cannot move out of `ts` because it is borrowed 
34+     _b ( ) ; 
35+ } 
Original file line number Diff line number Diff line change 1+ error[E0505]: cannot move out of `ts` because it is borrowed
2+   --> $DIR/match-edge-cases.rs:32:22
3+    |
4+ LL |     let _b = || { match ts {
5+    |              --         -- borrow occurs due to use in closure
6+    |              |
7+    |              borrow of `ts` occurs here
8+ ...
9+ LL |     let mut mut_ts = ts;
10+    |                      ^^ move out of `ts` occurs here
11+ LL |
12+ LL |     _b();
13+    |     -- borrow later used here
14+ 
15+ error: aborting due to previous error
16+ 
17+ For more information about this error, try `rustc --explain E0505`.
    
 
   
 
     
   
   
          
     
  
    
     
 
    
      
     
 
     
    You can’t perform that action at this time.
  
 
    
  
     
    
      
        
     
 
       
      
     
   
 
    
    
  
 
  
 
     
    
0 commit comments