error[E0070]: invalid left-hand side of assignment --> $DIR/assign-non-lval-derefmut.rs:5:23 | LL | x.lock().unwrap() = 2; | ----------------- ^ | | | cannot assign to this expression | help: consider dereferencing here to assign to the mutably borrowed value | LL | *x.lock().unwrap() = 2; | + error[E0368]: binary assignment operation `+=` cannot be applied to type `MutexGuard<'_, usize>` --> $DIR/assign-non-lval-derefmut.rs:7:5 | LL | x.lock().unwrap() += 1; | -----------------^^^^^ | | | cannot use `+=` on type `MutexGuard<'_, usize>` | help: `+=` can be used on `usize` if you dereference the left-hand side | LL | *x.lock().unwrap() += 1; | + error[E0308]: mismatched types --> $DIR/assign-non-lval-derefmut.rs:11:9 | LL | let mut y = x.lock().unwrap(); | ----------------- expected due to this value LL | y = 2; | ^ expected struct `MutexGuard`, found integer | = note: expected struct `MutexGuard<'_, usize>` found type `{integer}` help: consider dereferencing here to assign to the mutably borrowed value | LL | *y = 2; | + error[E0368]: binary assignment operation `+=` cannot be applied to type `MutexGuard<'_, usize>` --> $DIR/assign-non-lval-derefmut.rs:13:5 | LL | y += 1; | -^^^^^ | | | cannot use `+=` on type `MutexGuard<'_, usize>` | help: `+=` can be used on `usize` if you dereference the left-hand side | LL | *y += 1; | + error: aborting due to 4 previous errors Some errors have detailed explanations: E0070, E0308, E0368. For more information about an error, try `rustc --explain E0070`.