error[E0596]: cannot borrow `arg` as mutable, as it is not declared as mutable
  --> $DIR/borrowck-argument.rs:10:5
   |
LL |     arg.mutate();
   |     ^^^ cannot borrow as mutable
   |
help: consider changing this to be mutable
   |
LL | fn func(mut arg: S) {
   |         +++

error[E0596]: cannot borrow `arg` as mutable, as it is not declared as mutable
  --> $DIR/borrowck-argument.rs:15:9
   |
LL |         arg.mutate();
   |         ^^^ cannot borrow as mutable
   |
help: consider changing this to be mutable
   |
LL |     fn method(&self, mut arg: S) {
   |                      +++

error[E0596]: cannot borrow `arg` as mutable, as it is not declared as mutable
  --> $DIR/borrowck-argument.rs:21:9
   |
LL |         arg.mutate();
   |         ^^^ cannot borrow as mutable
   |
help: consider changing this to be mutable
   |
LL |     fn default(&self, mut arg: S) {
   |                       +++

error[E0596]: cannot borrow `arg` as mutable, as it is not declared as mutable
  --> $DIR/borrowck-argument.rs:32:17
   |
LL |     (|arg: S| { arg.mutate() })(s);
   |                 ^^^ cannot borrow as mutable
   |
help: consider changing this to be mutable
   |
LL |     (|mut arg: S| { arg.mutate() })(s);
   |       +++

error: aborting due to 4 previous errors

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