> My theory is that this removes direct understanding what happens and instead shifts the focus on how to get the task done while not violating the type system rules
In my experience it is in fact still a requirement to understand
what's happening in order to write clean and fast Rust code. It
is possible to satisfy the compiler using a lot of clone() calls
and similar shortcuts, but once you understand what data
structure is allocated when and where and how the whole
ownership principle works in practice you can suddenly avoid a
ton of unnecessary heap allocations and other pitfalls. I'd say
my experience with Rust improved a lot once I started grasping
what's happening in memory and why certain syntax elements
exist, as this makes fixing compiler errors more intuitive and
less a blind trial and error session with the borrow checker.
Some of Rust's syntax can look weirdly unfamiliar at the
beginning, but everything is there for a good reason. Nothing is
done implicitly, and much of the pattern matching and
Option/Result related stuff is Rust's way of replacing the
concept of `null` with thoroughly type-checked expressions.
In my experience it is in fact still a requirement to understand what's happening in order to write clean and fast Rust code. It is possible to satisfy the compiler using a lot of clone() calls and similar shortcuts, but once you understand what data structure is allocated when and where and how the whole ownership principle works in practice you can suddenly avoid a ton of unnecessary heap allocations and other pitfalls. I'd say my experience with Rust improved a lot once I started grasping what's happening in memory and why certain syntax elements exist, as this makes fixing compiler errors more intuitive and less a blind trial and error session with the borrow checker.
Some of Rust's syntax can look weirdly unfamiliar at the beginning, but everything is there for a good reason. Nothing is done implicitly, and much of the pattern matching and Option/Result related stuff is Rust's way of replacing the concept of `null` with thoroughly type-checked expressions.