Every time I start a project in Rust, I face the same hurdle -- it is really hard to sketch out code that doesn't work as you develop things. The compiler is (properly) so finicky about correctness, I find it very taxing to build things I have not figured out the final impl for. In Java, C#, Python, Ruby, you can have lots of things dangling and not working and still compile and run other parts as you code. In Rust -- well, this is the other side of how good the compiler and language are regarding correctness. But it translates into immense friction for me. The borrow checker is not a big problem; I spent years in C. But the myriad of ways to do things and lack of clear tradeoffs between them is annoying. The only way to learn is to write a ton of Rust code. The problem then becomes you can't code easily in Rust in the background and in some other language in your day job. You need immersion, as it stands.