Great write up, when I started coding in Rust, I sometimes used to get frustrated, but then realised how helpful the checker is and really made me think about structure and mechanics of my code, making me a better developer.
One more final point while I was thinking. I am a fan of both languages, Go & Rust. Go is in-fact still my recommended languages for teams, and until Rust hits a maturity level that wont change, but I am a big fan fo what rust is trying to become, I am using it for new code because of the problem fit, and I believe both ecosystems can co-exist. Go is also introducing some nice long awaited features (hopefully) in a decent way.
One more point here, I wouldnt have done it if I did not get full support & enthusiasm from my team. But I guess sometimes it helps when you dont have HUGE existing code bases to have to justify to port. =)
Yes I agree. Beauty is highly subjective when it comes to programming languages. Its definitely an expression of a feeling from use and relative successes/failures.
I know people I highly respect that call C# with Linq & its lambda implementation very beautiful, and I can see why, but I have not a strong opinion one way or another on it.
I had a lot fun when initially learning Rust, and the way I have phased it in to the projects (work & home) that I have been doing has led to successes, which definitely increases my bias towards the fact rust is awesome =).
Like I said, we are using it for new code bases, and not moving all of our existing Go Code, thats doing fine. I agree that GO is very easy, I can get most any dev up and running and comfortable on Go in about a week. Honestly though, I can get a decent dev going on Rust in a week. Even with Go, if I was teaching a NodeJS dev, I would get them going on everything but goroutines & channels, and then ease them into it. With Rust, I feel to a Go dev, the syntax isnt too foreign. Plus, focus on understanding ownership & borrowing with real examples relevant to the team, then have them focus on core language features, and then branch out, how you would do with any language. We see a noticeable uptick in performance, and Rust has been well received.
Yes Go's ecosystem now is well established, but when trying to do Location intelligence software back in 2014/2015 with Go was a pain from memory. I am not bashing GO, been a gopher for a while, but I do love Rust, and IMHO is not too complex. It just makes sense.
While compile times can be slow, the rust system is checking so much for you, so that you can have a predictable @scale runtime. What was the issue with tokio?
Plus, with async/await Futures coming in soon, already on nightly right, this should become good if not already?
Rust went down the Kotlin route of not including coroutines/async/await initially and allowed Lib devs to build, but now have included as we all know. But anyways, keep at it, I have found Rust to be very helpful, using it at the startup I am at, and will keep using it deeper and in more complex scenarios.
Great job in pushing through though. Where have you been posting for help, I am no ways an expert, and have been learning Rust, but all I have heard is the welcoming nature of the community, and would love to at-least try and help. Its a great language, but yes, a stabilizing and emerging ecosystem. But this is the way it will mature; implement tasks that push the language and hopefully come out with good solutions. The Go ecosystem evolved in this manner as-well, and others as well.
I have been learning Rust on and off this year. I have been writing mostly GO for the past few years, but am moving to coding almost primarily in Rust for any new project, and porting over some older ones. Microservices, Data Layer, etc... Honestly, while not perfect, its one of the most beautiful languages I have ever come across. Plus, I have not enjoyed coding in a language this much in a while.