Surface Rust:

The Missing IDE

This week I decided to do a little hacking on Rust. I thought I’d write down my first impressions of the language, The Rust site states:

Rust is a systems programming language that runs blazingly fast, prevents segfaults, and guarantees thread safety.

Sounds good to me. I’d love to add a less bloated C++ to my planging, so I started reading the book, and completing the exercises. As I got into it I found myself really enjoying Rust. Overall the language has a great feel. Coding in Rust just feels good to me. Especially after so long working with Python, the type system really soothes. Cargo is great, and the compiler errors and warnings are incredibly descriptive and useful. I was enjoying Rust so much I decided to set up a dedicated environment for it. This is where I hit a snag.

Where is the IDE? Some cursory googling showed plenty of plugins available, but not much in the way of an IDE with a debugger. I’m aware that many people will point out that VIM or Emacs is a perfectly functional IDE. Unfortunately that’s not what I’m looking for.

I want the Wikipedia definition of an IDE. Complete with debugger.

Anjuta, a C and C++ IDE for the GNOMEenvironment
An integrated development environment (IDE) is a software application that provides comprehensive facilities to computer programmers for software development. An IDE normally consists of a source code editor, build automation tools, and a debugger.

I popped into the #rust-beginners channel on and asked what people were using. The response was to check areweideyet. I’d already been to the site, and had been hoping for some real talk about IDE preferences among Rust devs. Maybe I hit the channel at the wrong time, but it looked like I was on my own. Looking through the list there were some promising options.

IDE’s hurray!

I was able to narrow my serious selections pretty quickly. I wanted something with close to the full feature set, and debugging. These requirements leave me with:

  • Eclipse
  • IntelliJ IDEA
  • VS Code

IntelliJ IDEA was my first choice. I use Pycharm and I absolutely love it. I actually have never used a Jetbrains product I didn’t like. Unfortunately it turns out that debugging support is only available in Clion, which costs more than I’m willing to put down for messing around with a new language. I also don’t write enough C to make the investment worthwhile. If you already have a Clion license, or one of the very permissive student licenses, this is probably the IDE of choice.

Moving along, Eclipse was my second choice. Eclipse is a work horse, it runs on basically everything, it’s a solid IDE.

*sad trombone*

Areweide says that the Rust plugin for Eclipse has been discontinued. It might work now, it might not. I don’t know, I didn’t try. I don’t think it’s a good habit to be reliant on discontinued software.

That leaves me with VS Code. I’m going to be honest and say, I’ve never really liked VS Code. But I am willing to give it a try. It shouldn’t be a big deal to get it up and running right? I added the dpkg, and did my apt-upgrade -f. Then I hit a snag.

I checked the log, and discovered the error.

Failed to load resource: net::ERR_INTERNET_DISCONNECTED

That’s not good, especially since everything else has a network connection. This puts me firmly in the territory of, messing around before I can be productive. I could resolve this error on my current VM, I could try Fedora or Arch; both of which I’ve had better luck with in than Debian in the past, or I could just use my Windows machine.

There are plenty of options available to me to solve this issue, but it’s a matter of effort, how much am I really willing to put in when I’m learning a language that already isn’t very popular and would only be used for my own toy projects?

I don’t feel that a language is complete until it’s widely supported by IDE’s. Rust has been around eight years, and yet there’s next to no full fledged robust IDE support. This is a problem.

Getting momentum going is crucial for a new language. There’s already more than enough programming languages to go around. Part of gaining momentum is a low barrier to entry. If getting into a language is difficult you remove a large group of people from your pool of contributors. People have a finite amount of time to spend messing around. The Rust motto states:

“fast, reliable, productive: pick three.”

Sounds good, but part of being productive is being able to debug from my IDE. The limited options really adds to the barrier of entry when learning a new language. I’ll continue with Rust, and my least favorite IDE VS Code. For now, because I enjoy Rust.

I suspect that as soon as Rust looses it’s freshness I’ll be back to Pycharm, and maybe in a few years IDE support will be better? In the meantime you can check and hope support gets added. My suspicion is that support will continue to dwindle.