Deciding between Rust and C++ for internal tooling
Hi fellow rustaceans 👋
I work on a small development team (~3 engineers total) for an equally small hardware manufacturer, and I’m currently in charge of writing the software for one of our hardware contracts. Since this contract is moving much faster than our other ones (albeit much smaller in scope though), I’m having to build out our QA tooling from scratch as none of it exists yet. This has led me to a crossroads between C++ and Rust, and which would be the best fit for our company.
I’m wanting to build a GUI application for our QA/Software team to use for interfacing with hardware and running board checkouts. Our core product that runs on these boards is written in C++, but communications with it are done over TCP and serial, so the tool itself can be fairly language agnostic.
My reasons for C++ are mostly based on maturity and adoption. Our team is already familiar with C++, and the GUI library we’ll probably use (WxWidgets) is well known. Unfortunately though, our projects use a mixture of C++11/14 which limits the kind of modern features we can use to make things easier, and from personal experience it’s been a bit cumbersome write good networking applications in C++.
On the other hand, Rust’s std library I feel would be perfect for this. Having all of this wrapped together nicely in Rust would be a good for developer UX, and the Result/Option design of Rust eliminates bugs that we would have found in production during development instead. Of course, Rust isn’t widely adopted yet, and no one else on our teams is familiar with the language. I’ve already been given approval to write a watchdog application for our product in Rust, but I feel writing internal tools that may grow in scope/be useful for other programs would be pushing the envelope too far (I’ll be responsible for providing QA analysis and testing results for it which will be equally exciting and stressful lol). I’m also aware that GUI libraries for Rust are limited, and am currently researching whether egui or wxDragon would be stable enough for us to reliably use.
I’d love to hear your thoughts on this. I may be too naive/biased in my thinking and may just move forward with C++, but would love to hear other opinions.