Everybody around me knows that I am a big fan of 🐍 Python. I started using Python about 15 years ago when I was fed up with Mathworks Matlab. While the idea of Matlab seemed nice, after mastering Python I never looked back. I even became a sort of evangelist of Python at my University and “spread the word”.
The ability to code does not make you a software developer.
At my current employer TenneT, a large transmission system operator in the Netherlands and Germany, we are building a document parsing and validation solution with a team of about 10 people. Building such a solution, especially in a team, is much harder than I thought. This also made me more interested in proper paradigms of software engineering. I always thought that my code is not too bad, but after looking at working from my software engineer friends: man there is so much to learn!
As I learned about topics like strong typing, SOLID principles, and general programming architectures, I also glanced at other languages and how they solved the problem. Especially Rust caught my eye as I often saw Python packages that were based on Rust (e.g. Polars).
To get a proper introduction to Rust I followed the official Rustlings course which is a local Git repository with 96 small coding problems. While it was quite doable, Rust is very different than Python. The Rust compiler is a very strict fellow that does not take maybe for an answer. Below are my three major differences between Rust and Python.
Disclaimer: while I am quite proficient with Python, my other languages are a bit Rusty (pun intended). I am still learning Rust and I may have understood parts incorrectly.
Ownership and borrowing are probably the most fundamental aspect of the Rust programming language. It is designed to ensure memory safety without the need of a so called garbage collector. This is a unique concept to…