Не может одновременно существовать mutable borrow и immutable borrow.
Замыкание берёт mutable borrow и пока замыкание находится в области видимости - никто не может читать значение переменной.
Мне кажется, лучше чем компилятор это не объяснит:
Compiling playground v0.0.1 (/playground)
error[E0502]: cannot borrow `counter` as immutable because it is also borrowed as mutable
  --> src/main.rs:11:30
   |
7  |     let mut increase = || {
   |                        -- mutable borrow occurs here
8  |         counter += INCR;
   |         ------- first borrow occurs due to use of `counter` in closure
...
11 |     println!("counter = {}", counter);
   |                              ^^^^^^^ immutable borrow occurs here
...
14 |         increase();
   |         -------- mutable borrow later used here
   |
   = note: this error originates in the macro `$crate::format_args_nl` which comes from the expansion of the macro `println` (in Nightly builds, run with -Z macro-backtrace for more info)
error[E0502]: cannot borrow `counter` as immutable because it is also borrowed as mutable
  --> src/main.rs:16:34
   |
7  |     let mut increase = || {
   |                        -- mutable borrow occurs here
8  |         counter += INCR;
   |         ------- first borrow occurs due to use of `counter` in closure
...
14 |         increase();
   |         -------- mutable borrow later used here
15 |
16 |         println!("counter = {}", counter);
   |                                  ^^^^^^^ immutable borrow occurs here
   |
   = note: this error originates in the macro `$crate::format_args_nl` which comes from the expansion of the macro `println` (in Nightly builds, run with -Z macro-backtrace for more info)
error[E0503]: cannot use `counter` because it was mutably borrowed
  --> src/main.rs:18:12
   |
7  |     let mut increase = || {
   |                        -- `counter` is borrowed here
8  |         counter += INCR;
   |         ------- borrow occurs due to use of `counter` in closure
...
14 |         increase();
   |         -------- borrow later used here
...
18 |         if counter == STOP {
   |            ^^^^^^^ use of borrowed `counter`
Some errors have detailed explanations: E0502, E0503.
For more information about an error, try `rustc --explain E0502`.
error: could not compile `playground` due to 3 previous errors