@xliiv There are some problems with fixing this... you would need to somehow annotate get_value_mut to indicate that it only borrows self.value and not other fields. AFAIK, there's no plan about this yet.
@tanriol i'm not sure how other rustaceannanes (sorry, don't know spelling :) ) handle that, but i thought that whould be nice ownership2.0 or something.. i mean increasing granularity.. current version is safe because is generic, but in some level of details... borrow-chceckers bans legal things (i aware that is probabbly limited by developing time since is much more demanding)..
Even the desired outcome itself is non-obvious here. For example, would you expect to explicitly annotate which fields are borrowed or to have them inferred from the function body? This is an important part of the API, so I'd expect it to be explicit.
This change will also limit the refactoring significantly as making any pair of methods have conflicting borrows if they were not conflicting before would be formally a breaking change... even if no one uses that particular pair and it makes little sense.
Furthermore, if you choose annotating methods, there's a problem of what exactly do these annotations tell. For example, if all fields are private, how would you expect the annotations to look?