It’s almost as if you need to completely unlearn behaviours before you can learn the “the rust way”.
I think the standard path is this “book” (GitHub repo): https://github.com/nrc/r4cppp
In a way it is like meeting an old friend, a kind of Ada/Modula-2/Object Pascal coupled with the borrow checker and more curly friendly syntax.
You are so lucky. I used around +12 langs, professionally, and learning Rust was the biggest slap on the face I ever faced.
The major breakthrough on my learning was understand that Rust make A LOT of things easier, but start doing a fully formed system/app was not the way.
ie: Get to know the real small stuff.
Rust is: structs, enums, traits, iterators.
Then learn the idioms:
https://rust-lang.github.io/api-guidelines/
The most key thing about Rust is that everything revolves around trait and trait composition. For example. if you look at:
https://doc.rust-lang.org/src/alloc/string.rs.html#366-368
You will wonder "where is all the functionality to deal with Strings???".
And the answer is that that is not on Strings, but around several traits. Then you start seeing that traits everywhere, and suddenly, you see that learn X here means you already know how do Y there.
Then, you start doing apps/systems, and now it will fly!
And based on all this copying a megabyte might be perfectly A-OK. Computers are fast, life is short, keep structs simple because they can get problematic (https://matklad.github.io/2020/12/28/csdi.html).
That's actually a good start for just making things work but yes, maybe you can try to optimize that away much as you would in C. E.g. you can use std::borrow::Cow<> to abstract across "owned" and "borrowed" data, so that copies only happen when necessary.
I tried Rust, wrote a raytracer and a GameBoy emulator to learn the language. But I still find it VERY hard and slow to write on a daily basis. You can't just test anything with it. Either you thought the whole project well at the beginning, or you'll need to rewrite everything from the start.
I understand Rust is meant to be clean, no undefined behaviours, everything explict. But as a C programmer, that's just the opposite of what I am accustomed to.
Are there documentations, books, tutorials, whatever, that explain to someone like me how Rust works from a C expert's perspective ?
(To be clear, my brain is NOT a clean slate, and I think we are legion. I've spend sometimes days to understand how to clear a Rust compiler error, and it ends with the copy of a whole megabyte of a structure because I don't think how I should think in Rust)