Вот простой код:
struct MyStruct {
...
}
impl MyStruct {
fn foo(&mut self) {
...
self.bar();
...
}
fn bar(&mut self) {
...
}
}
Он не собирается, потому что cannot borrow `*self` as mutable more than once at a time.
Я не хочу писать километровые функции и хочу декомпозировать метод класса на несколько подметодов, которые друг-друга вызывают, каждый из которых можно комфортно редактировать. Меня даже устроит, если эти вспомогательные методы будут private, если Rust иначе не может доказать корректность. По факту я просто хочу разбить функцию на несколько частей. При этом дробить сам класс на несколько классов я не хочу, так как оба метода работают над одними и теми же данными.
Как это делается в Rust?