Часто бывает так, что в функции, которая принимает
self нужно вызвать функцию, которая принимает &mut self.fn final(self) {
self.mutating_foo(); ❌
}Есть очевидный способ это сделать - объявить аргумент как мутируемым.
Для вызывающего кода это ни на что не влияет.
fn final(mut self) {
self.mutating_foo(); ✅
}Или (менее популярно) перебиндить в теле функции
fn final(self) {
let mut me = self;
me.mutating_foo(); ✅
}Но есть способ для того что бы инкрементить WTF_COUNT у читателя.
fn final(self) {
{ self }.mutating_foo(); 💀
}