Rust is Exciting

Rust is an exciting language. I recently bought The Rust Programming Language Book. It’s quite dense with a lot of concepts I haven’t thought about since college. Working in high-level programming languages such as Java, Python, and TypeScript have allowed me to mostly forget about the woes of low-level programming. Rust has both re-introduced me to these problems, and then immediately solved them with the advanced static analysis that its compiler provides.

I’m still a beginner with Rust. That’s the exciting part. I have so many questions; so many things to figure out. It’s a challenge. It’s a lot to learn. It reminds me of when I first started programming. There was a mountain of work to do, and an endless number of things to figure out. Eventually it gets easier and you become productive. You write small applications just because you can — because you want to prove that you know what you think you know.

Rust is full of features. Many of them deal with safety, such as the ownership system and borrow checker. It helps to guarantee memory safety, and coincidentally also helps when writing code that will be executed concurrently. These features are important, but what I’m really excited about are the language features — the features that make a language a joy to work in. Rust has plenty of these. Interoperability with C, pattern matching, the lack of a null type, Cargo, immutability-by-default, functional programming constructs built-in, macros, a compiler with the most helpful error messages I’ve ever seen, tuples, and pattern-matching. I’m just scratching the service. The type system and syntax isn’t quite as good as TypeScript, which I hold as the absolute gold standard (even if it isn’t perfect).

What’s particularly exciting is the applicability of Rust. I tend to use Python or Java for small shell scripts/programs. It works great for me, but it’s not especially portable. If I want to share my creations with my team members I have to provide explicit instructions about which runtime versions must be used, and any possible dependencies. Rust is a bit different. Since it produces native binaries I can simply hand them the executable (provided the dependencies are bundled) and let them have at it.

I’m excited to be a beginner again. I’m excited to learn about things I’ll never use in my day job. I’m excited to get good at writing Rust code. I’m excited for the future of programming languages, which will hopefully follow in Rust’s footsteps.