This will probably be a record for the latest RustConf 2018 Trip Report. The conference was in mid-August. It was quite lovely and I got to meet several people in meatspace that I’d only interacted with on Twitter or elsewhere.
The first day of the conference was technically training. Because I had gotten permission to attend so late, there were few classes open, but decided an intro class would make most sense. Steve Klabnik was the presenter, and the training was relaxed and fun. Steve is a good teacher and knows how to keep the atmosphere relaxed. This helped a great deal for me, as I primarily participate in the C++ community and felt way out of my element at the conference. Having this as an introduction to the conference did a lot to allay my concerns that I didn’t belong at RustConf. There were (unsurprisingly) quite a few people in the room coming from C++. Steve’s approach to teaching Rust is primarily focused for people coming from dynamic languages or C, but he was able to point out a few things I had missed having jumped into Rust with nothing but my C++ experience as a background.
If there is one thing I like about Rust, it’s that it has learned from the
mistakes of early C++. While C++ had to make these decisions in the name of
interoperability with C, Rust has chosen to eschew that resulting in const by
default, and explicit pass by reference. The use of destructive moves (what we
in the C++ world are currently calling relocation thanks to a paper on a
trivially_relocatable attribute1), in addition to
const by default lends
a lot to Rust’s usability. I don’t think it would be as useful of a tool if
moves weren’t destructive. Coming from C++, I’ve rarely run into issues with
the borrow checker, with the occasional explicit lifetime throwing me for a
loop. Instead, I find most of my time spent trying to figure out the most
idiomatic way to do a thing in Rust. Learning that most conversions can be
handled by passing
Into::into into a function expecting a callable as an
argument was a bit breakthrough, I feel.
The rest of the conference was lovely as well. @spacekookie’s talk on C++ and Rust interop was extremely interesting. It led to some looks of horror from people in the audience, as she described her attempts to throw exceptions from Rust to be caught in C++, as well as catching C++ exceptions entirely within Rust. Her method to approach this was from a non-C++ expert and I pointed out a few things she was not aware of regarding C++ exception handling that would (hopefully!) save a few nights of frustration. Her biggest blocker for this interop was Windows support. James McNellis gave a talk2 at CppCon about how exceptions work on Windows, and I let her know about it once the video was up. I look forward to updates regarding her attempts at this, as well as seeing an update to @mgattozzi’s face of abject terror.
Further talks I attended were How to (not) introduce Rust at your workplace, presented by Douglas Campos (whose advice during the talk I wished I’d heeded, as a Rust project I deployed at Target was killed and had to be rewritten in C++, despite working to spec), as well as Integrating Rust into Tor: Successes and Challenges presented by Isis Lovecruft and Chelsea Komlo. Both of these people are cool and chill, and if you have the opportunity to chill with them, I highly recommend it.
Unfortunately, it’s been several months since I attended and I’ve lost not only my notes, but my memory of other talks I was present for. Luckily, all videos are available on YouTube, so I highly recommend you give them a watch.
Lunch was also provided as part of the conference and this was a neat opportunity to sit down and discuss with people various projects or opinions. And of course, being a C++ developer attending a Rust conference, I ended up seated at a table where people were discussing C++ and the standards committee. I only got involved in the discussion because I clearly heard Herb Sutter’s name spoken and uttered (…suttered?). It was an interesting discussion with a few people from Swift, and (IIRC) Haskell. If anything it showed a large misunderstanding between C++ developers and developers of other languages. If anything, this single encounter has given me the opinion that you cannot add features from other languages to C++ unless you’ve written something in said language. Otherwise you’re just reacting based on word of mouth and what you’ve read, instead of experienced.
One thing I would like to apologize to my fellow attendees was discussing C++ so much. I realized on the drive home that despite attending a Rust conference, many people I spoke with didn’t discuss Rust, but other languages they were coming from. Thus, I spent two days at a Rust conference mostly discussing… C++ 😅.
Overall, I had a lot of fun at RustConf, and I hope to attend again in 2019. This time I hopefully won’t talk about C++ so much 😄