error[E0594]: cannot assign to `x`, as it is not declared as mutable
  --> $DIR/closure-captures.rs:7:5
   |
LL | fn one_closure(x: i32) {
   |                - help: consider changing this to be mutable: `mut x`
LL |     ||
LL |     x = 1;
   |     ^^^^^ cannot assign

error[E0594]: cannot assign to `x`, as it is not declared as mutable
  --> $DIR/closure-captures.rs:9:5
   |
LL | fn one_closure(x: i32) {
   |                - help: consider changing this to be mutable: `mut x`
...
LL |     x = 1;
   |     ^^^^^ cannot assign

error[E0594]: cannot assign to `x`, as it is not declared as mutable
  --> $DIR/closure-captures.rs:15:9
   |
LL | fn two_closures(x: i32) {
   |                 - help: consider changing this to be mutable: `mut x`
...
LL |         x = 1;
   |         ^^^^^ cannot assign

error[E0594]: cannot assign to `x`, as it is not declared as mutable
  --> $DIR/closure-captures.rs:19:9
   |
LL | fn two_closures(x: i32) {
   |                 - help: consider changing this to be mutable: `mut x`
...
LL |         x = 1;
   |         ^^^^^ cannot assign

error[E0596]: cannot borrow `x` as mutable, as it is a captured variable in a `Fn` closure
  --> $DIR/closure-captures.rs:27:9
   |
LL |   fn fn_ref<F: Fn()>(f: F) -> F { f }
   |                         - change this to accept `FnMut` instead of `Fn`
...
LL |       fn_ref(|| {
   |  _____------_-
   | |     |
   | |     expects `Fn` instead of `FnMut`
LL | |         ||
   | |         ^^ cannot borrow as mutable
LL | |          x = 1;}
   | |__________-_____- in this closure
   |            |
   |            mutable borrow occurs due to use of `x` in closure

error[E0596]: cannot borrow `x` as mutable, as it is a captured variable in a `Fn` closure
  --> $DIR/closure-captures.rs:31:9
   |
LL |   fn fn_ref<F: Fn()>(f: F) -> F { f }
   |                         - change this to accept `FnMut` instead of `Fn`
...
LL |       fn_ref(move || {
   |  _____------_-
   | |     |
   | |     expects `Fn` instead of `FnMut`
LL | |         ||
   | |         ^^ cannot borrow as mutable
LL | |     x = 1;});
   | |_____-_____- in this closure
   |       |
   |       mutable borrow occurs due to use of `x` in closure

error[E0594]: cannot assign to `x`, as it is not declared as mutable
  --> $DIR/closure-captures.rs:39:10
   |
LL | fn two_closures_ref(x: i32) {
   |                     - help: consider changing this to be mutable: `mut x`
...
LL |          x = 1;}
   |          ^^^^^ cannot assign

error[E0596]: cannot borrow `x` as mutable, as it is a captured variable in a `Fn` closure
  --> $DIR/closure-captures.rs:38:9
   |
LL |   fn fn_ref<F: Fn()>(f: F) -> F { f }
   |                         - change this to accept `FnMut` instead of `Fn`
...
LL |       fn_ref(|| {
   |  _____------_-
   | |     |
   | |     expects `Fn` instead of `FnMut`
LL | |         ||
   | |         ^^ cannot borrow as mutable
LL | |          x = 1;}
   | |__________-_____- in this closure
   |            |
   |            mutable borrow occurs due to use of `x` in closure

error[E0594]: cannot assign to `x`, as it is not declared as mutable
  --> $DIR/closure-captures.rs:43:5
   |
LL | fn two_closures_ref(x: i32) {
   |                     - help: consider changing this to be mutable: `mut x`
...
LL |     x = 1;});
   |     ^^^^^ cannot assign

error[E0596]: cannot borrow `x` as mutable, as it is a captured variable in a `Fn` closure
  --> $DIR/closure-captures.rs:42:9
   |
LL |   fn fn_ref<F: Fn()>(f: F) -> F { f }
   |                         - change this to accept `FnMut` instead of `Fn`
...
LL |       fn_ref(move || {
   |  _____------_-
   | |     |
   | |     expects `Fn` instead of `FnMut`
LL | |         ||
   | |         ^^ cannot borrow as mutable
LL | |     x = 1;});
   | |_____-_____- in this closure
   |       |
   |       mutable borrow occurs due to use of `x` in closure

error[E0596]: cannot borrow `x` as mutable, as it is a captured variable in a `Fn` closure
  --> $DIR/closure-captures.rs:48:9
   |
LL |   fn fn_ref<F: Fn()>(f: F) -> F { f }
   |                         - change this to accept `FnMut` instead of `Fn`
...
LL |       fn_ref(|| {
   |  _____------_-
   | |     |
   | |     expects `Fn` instead of `FnMut`
LL | |         ||
   | |         ^^ cannot borrow as mutable
LL | |         *x = 1;});
   | |__________-_____- in this closure
   |            |
   |            mutable borrow occurs due to use of `x` in closure

error[E0596]: cannot borrow `x` as mutable, as it is a captured variable in a `Fn` closure
  --> $DIR/closure-captures.rs:51:9
   |
LL |   fn fn_ref<F: Fn()>(f: F) -> F { f }
   |                         - change this to accept `FnMut` instead of `Fn`
...
LL |       fn_ref(move || {
   |  _____------_-
   | |     |
   | |     expects `Fn` instead of `FnMut`
LL | |         ||
   | |         ^^ cannot borrow as mutable
LL | |         *x = 1;});
   | |__________-_____- in this closure
   |            |
   |            mutable borrow occurs due to use of `x` in closure

error: aborting due to 12 previous errors

Some errors have detailed explanations: E0594, E0596.
For more information about an error, try `rustc --explain E0594`.
