Contents

Francesco Guardiani - My Rust Story

Francesco Guardiani - My Rust Story webp image

Rust celebrates its 10th anniversary in 2025—an exciting milestone for the language and its vibrant community! The #MyRustStory series highlights insights from key community leaders shaping the Rust ecosystem.

Want to connect with them in person? Join Rustikon, Poland’s first Rust conference! 🚀

rustikon

It's time for our next expert - Francesco Guardiani API/DevEx Software Engineer in Restate.

How did you first get introduced to Rust, and what were your initial thoughts about it?

I started playing with Rust as a hobby, and I used to attend the Rust meetup in Milan where people share their passion projects. Once, I even spoke about a side project: creating a FUSE filesystem using Rust!

Since then, I started using Rust professionally after a while when I was working in Red Hat, then in Restate, where the company focuses heavily on Rust.

My first obvious reaction: wow, the learning curve is very steep!

Can you share a moment when you realized, “Wow, Rust is amazing”? What features or capabilities of Rust made you feel that way?

For me, the “borrow checker” is the killer feature among them all, once you wrap your head around it. Given my background in GC-based languages, the borrow checker taught me a different and more structured way to think about who owns a value and who can access it mutably or not. I have applied this knowledge in all the other languages I have used since then.

Another aspect I like quite a lot about Rust is the poll-based design of Futures. It just makes it so simple to reason about concurrency and who runs futures to completions, something very important when debugging highly concurrent applications.

Last but not least, macros are awesome, building compile-time DSLs has never been so easy! I also wrote a little blog post about that.

If you could add a new feature to Rust, what would it be, and how do you think it would benefit developers?

I would like better support for dynamic/virtual calls and improved ergonomics around Futures/async Rust. Especially for the latter, I too often still find myself having to Box a future, or having to do the pin_project spell to make the compiler happy.

Also some small additions (but not too many!) to the type system would be very welcomed, like negative/disjoint trait bounds.

What’s your favorite programming meme?

Not sure there is one for that, but a common saying among my colleagues is: Rust, straight to the hard problems!

What tools and libraries do you rely on when working as a software developer?

My IDE is Intellij IDEA all the way, and in Restate we use justfiles to script commands together. As for libraries, I’m using pretty regular stuff in all my projects: tokio, serde, hyper, thiserror, futures, etc.

Tell us about a time when Rust made a significant difference in a real-world project.

Restate is a production-grade distributed system fully built with Rust. I can hardly count the number of logical errors the compiler caught at compile time, thanks to the Rust type system and borrow checker!

How has the Rust community shaped your programming journey? Are there any standout interactions or stories of support you'd like to share?

The Rust Meetup in Milan was very fun. Kudos to Gabriele Lana who used to organize it and encourage us to share our hobby projects.

What advice would you give to someone just starting out with Rust?

It takes time and patience, but once you get there, you’ll have learnt an awesome language, and you’ll have a baggage of knowledge transferable to other languages too.

How have you seen Rust evolve over the years, particularly in your area of work?

I haven’t been using Rust for long enough to comment on its evolution, but the async traits were definitely a very good addition, which we’ve experienced in our codebase.

Is Rust only for systems programming, or do you see it as a valuable technology in other areas as well?

I think this will depend on how Rust evolves. If Rust improves the ergonomics around virtual calls, async/await, and perhaps it even gets a GC (without dropping the borrow checker!), it will be much more approachable to the wider audience.

🦀 Check other #MyRustStory:

Blog Comments powered by Disqus.