Is there a coding style and set of best-practices that avoid (not bypass) "fighting the borrow checker"?
In reading about Rust one of the few recurring criticisms I keep encountering is that you will have "to fight the borrow checker."
I have several questions about this.
Is "fighting the borrow checker" something that really happens when you're writing idiomatic Rust, or is it a result of C++ / Java / Python developers trying to force their long-held coding styles onto Rust?
i.e. is this something akin to a C++ developer "fighting the lack of pointer arithmetic" in Java? OR a PHP Developer "fighting the stupid indentation rules" in Python?
Is there a particular style of Rust or set of patterns that tends to let the borrow checker do its job without becoming a nuisance?
Before you respond PLEASE NOTE I'm not talking about "bypassing" the borrow checker via stupid tricks like stuffing all your memory into a byte array.