DEV Community

Cover image for 5 Things I Loved About Learning Rust
Omar Hiari
Omar Hiari

Posted on • Edited on

5 Things I Loved About Learning Rust

Before I delve into what I loved about Rust, I think it's well established that Rust has a steep learning curve. For me, it's something I loved about Rust as a change from what I experienced in learning other programming languages. It was more than mostly learning a new syntax. Though still, the learning curve might be one of the things that is slowing down adoption. It's something that I'd like to provide my insight into first on why that might be.

Over the past few weeks, I’ve immersed myself in learning most of Rust's aspects. Given the resources I found at hand, I probably would say that Rust is not a language for a programming beginner to learn. One main reason is that probably all popular material I’ve encountered seems to dive into the deep end early on assuming existing knowledge about concepts like pointers, references, and program memory layout. I feel that the reason in part is, rightly so, the excitement to highlight what Rust brings to the table. Having taught programming in C myself for years now, concepts like references and pointers were not considered introductory. Typically concepts like interrupts come later into the picture, yet still, end up being confusing (sometimes deterring) for students. Essentially, in teaching C as an entry-level course, I’ve found that in the early stages of learning a language it was beneficial to focus more on getting the essence of how to program and build standard algorithms something I haven't found in resources I came across. I could only imagine if I taught Rust following the flow I went through the reactions I would get. I imagined myself slapping in terms like "borrowing" and "immutability" to an entry-level engineering student that yet has a lot to learn about computers. As a matter of fact, I would probably go as far as to recommend that an individual wanting to learn Rust, first start by learning another system's programming language like C or C++. In addition, I would even recommend that the individual acquire some high-level computer system knowledge regarding programs and memory.

With that being said, here’s my top 5 list of things I loved about learning Rust:

1) The Awesome Community:

This is probably the thing I liked the most about learning Rust. I personally have not encountered a community so friendly and supportive. I found that there are a ton of passionate fellow developers that are extremely helpful and accomodating when you get stuck. In engaging with the community through the different channels, whether it be the Discord or Matrix chat rooms (full list to be found here ), I found everybody to be supportive, friendly, helpful, and accepting of all types of questions.

2) The Learning & Practice Resources:

I would say that one of the hardest things about learning a new topic is finding quality resources. For what I consider a fairly young language, Rust, and Rusteceans, have managed to provide a remarkable variety of high-quality resources for those wanting to learn. Starting with the official Rust Book "The Book" along with practice problems to match each chapter through the Rustlings exercises, it provided for a great learning experience. Though when I got stuck in a problem, as I searched, almost at every corner I would find a different resource, another book, set of exercises, or videos. Remained stuck? There was always the community there to help.

3) The Informative Compiler:

Imagine if you had a programming language where the compiler would suggest how you should fix your code? Almost sounds too good to be true. Interestingly enough, the Rust compiler actually does that. The messages generated from the compiler are some of the most informative and rarely cryptic that I've seen. Additionally, most of the time, the compiler also suggests how you should be fixing your code.

4) The Language Itself:

In Rust, I also found a challenge in the language that I didn’t find in other languages I learned before. As I went through the Rustlings exercises, there was something that always kept pulling me back to do more. Especially when I got stuck. It sort of bugged me that when I practiced doing certain things in the way I’m used to, I’d have to deal with a new kind of compiler error and spend significant time resolving it. Essentially, for somebody familiar with programming, picking different programming languages didn’t particularly take much effort before. With other programming languages, more or less all I did is code up algorithms and deal with syntax errors. For that matter, it wasn’t even a challenge. In Rust it was different, it was more than that. It was also about doing things right and that was the beauty of it.

In the end, as I worked through all exercises, I found that the beauty of Rust, being a modern multi-paradigm language, was that it inherited the best aspects out of all worlds like object-oriented, compiled, and functional programming.

5) Rusteceans:

Last but not least, there is something about Rusteaceans to appreciate. It's almost like Ruteaceans consider themselves a different breed of programmers that not only pride themselves in their work but also in being respectful of others. If anything, I also found Rustecean's passion for the language to be quite contagious. I hope I could qualify as one by now.

Conclusion

While Rust is a fairly tough language to learn, there is a lot to love about it. It didn't become the most loved language by Stackoverflow users for six years in a row for nothing. If anything Rust is a language that cares about doing things correctly. I for one felt a particular amusement in learning Rust that I did not feel in any other language. What are your thoughts about Rust? What particular things did you love about it? Leave your thoughts in a comment.

If you found this post useful, and if Embedded Rust interests you, stay in the know and skyrocket your learning curve by subscribing to The Embedded Rustacean newsletter:

Subscribe Now to The Embedded Rustacean

Top comments (0)