I work for an aerospace company and many of our flight software requires memory/thread safe code. There's been interest in Rust here and talk on adapting it. For about the past month and a half I've been coming in early and spending 30 minutes to an hour each day to learn it.
I'm a part time graduate student and full time software engineer at my company so my time is limited. Therefore, I've wanted to make sure I'm being as methodical as possible in the learning process of this language. Looking back on when you first started learning Rust, what would you do different or wish you would of understood more from the beginning when learning it?
Just a small background of where I'm coming from....
I'm a junior level engineer and have more exposure to C than C++. However, my roles at work have been completely encapsulated to C++ threaded applications (POSIX) for the last year. I can write my own Cmake/Makefiles and can do some Ruby/Python as far as scripting goes. My graduate work has been more C based programming in an embedded environment so far.
While the official Rust book does a remarkable job at teaching you enough of the language to get going, there are some specific and important intermediate-level topics where you will only get information through some extra research. These include...
- What are the most popular libraries for doing common things (e.g. composable error handling, concurrent data structures and parallel algorithms, user interface...).
- Anything related to macros, of the declarative and procedural kind.
- The standard language traits, what they do, and when they should be used.
- Best practices for writing unsafe code (the Nomicon is only the beginning).
- How Rust's (work-in-progress) asynchronous programming abstractions work, and why.
Personally, and like most people I assume, I resolved this by looking around the web, finding the hidden crate or blog posts on these topics, learning what I needed to learn, and forgetting about it. If I were to go back in time, what I would do instead is to spend extra time contributing to the various Rust documentation projects in order to make sure that this information is more accessible to the people who will come after me (and even to my future self, as all this material is now lost forever in my web browser history).
In a sense, rust-learning is (an awesome) part of the answer to this problem, as it manages to be a remarkably exhaustive bookmark list of unofficial Rust documentation across the web. But in the end it also remains an unwieldy big list of links, and I think there would be room for a more cohesive discussion, like an "Advanced Rust" book or something in that spirit.