Concept Prerequisites

Among the many programming languages used in production, Rust is one of the less beginner friendly.

This is for a couple of reasons:

  • It is very strict and requires understanding of its key concepts to program effectively (which means that just jumping head first can lead to frustration)
  • Knowledge of both lower-level systems programming and high-level functional/declarative programming concepts is required
  • Strong static typing with explicitly written types in many places
  • Concepts uncommon in the industry such as extensive pattern-matching and reliance on traits

Therefore a theoretical foundation is required before jumping head first into Rust.

It is also important to note that our field is full of trade-offs. The greater investment required to learn and implement Rust opens up the possibility of a great pay-off in terms of safety, correctness, performance and maintenance cost.

In general, languages are either good for developing effective (performant) applications or good for developing applications effectively (rapid prototyping). Rust leans more into the category of the former, although its development time requirements are not prohibitively long.

I recommend having at least a cursory knowledge of these topics (more important topics are highlighted):

Feel free to just DuckDuckGo (or even Google) these topics, you don't need to be proficient in any of these, but it helps to know what these concepts are, so that you are familiar with the terms when they are mentioned.