A few years ago, I started thinking about learning Rust. Java had been my main language, but around that time I picked up Go and spent quite a while building things with it, because it solved many of the pain points I had felt while using Java. At the same time, I was curious about Rust, which was always being compared with Go. Since it has no GC, I thought it might be better suited to building more performance-critical systems.
But I never really had a proper chance to use it until recently. Now that I’ve had my first real exposure to Rust, I have to admit that my impression is fairly disappointing. At first, learning it was still fun. There was plenty of syntax sugar, and I thought, “If I get used to this, I could write some pretty interesting code.” Rust also has a lot of features that immediately catch your eye, such as traits and the match expression, which feels a bit reminiscent of Scala. But the more I used it, the more I felt that the downsides were simply too large to be outweighed.
First of all, it was simply too complicated. I’m still not fully comfortable with the language, and even if I eventually become comfortable with it, I doubt I’ll ever feel relaxed using it. The ownership model in particular forces you to think about too many things outside the business logic itself. On top of that, compilation was painfully slow. I found myself spending far too much time just to make small changes to a bit of Rust code. If another chance to adopt Rust comes up in the future, I don’t think I’ll be quick to reach for it.