error[E0308]: mismatched types
  --> $DIR/issue-7061.rs:4:46
   |
LL |     fn foo(&'a mut self) -> Box<BarStruct> { self }
   |                             --------------   ^^^^ expected `Box<BarStruct>`, found `&mut BarStruct`
   |                             |
   |                             expected `Box<BarStruct>` because of return type
   |
   = note:         expected struct `Box<BarStruct>`
           found mutable reference `&'a mut BarStruct`

error: aborting due to previous error

For more information about this error, try `rustc --explain E0308`.