7

Don't suggest changing `&self` and `&mut self` in function signature to...

 1 year ago
source link: https://github.com/rust-lang/rust/pull/112019
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

Conversation

Contributor

Current suggestion for when taking a mutable reference to self in a closure (as an upvar) will produce a machine-applicable suggestion to change the self in the function signature to mut self, but does not account for the specialness of implicit self in that it can already have & and &mut (see #111554). This causes the function signature to become test(&mut mut self) which does not seem desirable.

error[E0596]: cannot borrow `self` as mutable, as it is not declared as mutable
   --> src/sound_player.rs:870:11
    |
869 |     pub fn test(&mut self) {
    |                      ---- help: consider changing this to be mutable: `mut self`
870 |     || test2(&mut self);
    |              ^^^^^^^^^ cannot borrow as mutable

This PR suppresses the "changing this to be mutable" suggestion if the implicit self is either ImplicitSelfKind::ImmRef or ImplicitSelfKind::MutRef.

Fixes #111554.


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK