Seeing that the “time vs cost” (EDIT: “cost vs benefit”) seems to be one of the arguments of @donallen, I think I need to put down my experience (this won’t be long as I am still in school and heavily learning about programming).
As a new Rustacean, I value different aspects of the language than all all of you might. Let’s talk about my failed attempts at learning C:
So, in my spare time, I searched for a lower level language to learn on my own. I already had done a little bit of C++, but I wanted to go lower, just to see.
Maybe I made a mistake, but I chose to write my own Window Manager using XCB. Well that wasn’t a good choice. I wanted to learn C first, and the documentation is all over the place. I can find a lot to learn, but it’s on many different sites that all do things differently… Not a good first impression; I don’t know anything about the language and I’m already lost.
I decided to still give a shot at writting that Window Manager; time to read XCB’s docum… oh wait. None, there is NONE. I couldn’t go any further. Every information that I read about people trying to build WM’s said: look at AwesomeWM’s code or i3’s code. Not easy when you don’t know a lot about the language.
I decided to drop C completely (knowing that it kind of was my fault, I didn’t begin with the right project).
I then decided to do a Minecraft launcher in C++. This also failed in about 2 to 4 hours when I realised I couldn’t compile the damn thing on Windows. So I took the easy route and did it in Java. It worked.
But then I found that weird language called Rust (searching for something on the Rust game, what a coincidence). I waited for some times to have a project I could do with it. When the idea came, I lauched myself:
I took one of my sites and converted the PHP code to Rust. Well, I completely re-did the application really.
The first thing to do was to learn Rust. Here came the 2 books and the endless ammount of help threads on this forum (I recommend anyone to read them all, I learned a lot doing this).
The second thing was to make some code. I decided to make the ftps part first and quickly stopped because the ftp crate didn’t work well.
So I experimented with SSH then, I had some lifetime issues that I finally worked out, and it worked like I wanted (even though SSH seems to be slow to connect, about 0.30s).
Seeing that the FTP crate didn’t get fixed, I got into the code of someone else for the first time and fixed it.
I did all of this in less time that I took to research to learn C and how XCB works.
For someone like me, that’s not out of school yet, learning time is more valuable than anything else. And Rust’s auto documentation is a god sent.
I’m sorry if this is long. This summarize my experience with Rust and how I see the language as someone that doesn’t already have much experience in other languages.
TL;DR: Rust is a great language to learn and fun to write with a really good community that wants you to be a better programmer by helping you and explaining to you what’s going on. Not the experience I had with C. From a learning perspective, Rust’s automatic documentation, strict naming of variables and functions, formatting with RustFMT, this will to enforce a style is amazing. This is the first time that I was able to go inside the code of someone and understand things! I am able to go inside, take a function, and search into the doc of the crate used. I feel like every time I spend on fighting the borrow checker and trying to understand lifetimes is time I don’t spend on trying to understand 3 different docs for the same API and 4 forum posts that give 4 different solutions for a problem.
EDIT: Once again, I didn’t talk about other things that I like about Rust. Like the fact that it can be a low level or a high level language depending on how you want to use it. And yes, I know that a web app is maybe not the good domain to write Rust code in for a first experience, but I wanted to see how far it could go: as far as I want. Not like PHP, where I didn’t try Sftp (FTP over SSH) because it has a weird implementation that is not complete. And debugging PHP is, well, not a pleasant experience.
EDIT2: added precision to the cost argument, my position doesn’t change since I’m not even really saying anything about this argument