Bringing Rust into our service layer

Why I started using Rust at Pixotope in 2023, and what building daemon services and Tauri tooling taught me.

I started using Rust at Pixotope in 2023. Before that my daily languages were TypeScript and JavaScript. Later that year I started a set of daemon services in Rust, with Tauri tooling built alongside them.

The problem

Some jobs don’t suit a front-end application. A daemon runs in the background and has to keep working whether or not anyone is looking at it. The services I worked on cover platform concerns such as network discovery, disk access and metadata.

Code like that has a different cost of failure. A crash in a background service can go unnoticed until something that depends on it stops working. For that kind of code I wanted a language that makes careless mistakes harder to write.

What I chose and why

Rust fits that description. Ownership and the type system push many errors to compile time, and error handling is explicit instead of something you can forget. I was new to the language, so I expected to spend a lot of time arguing with the compiler. The useful part is that it explains itself. Much of what I know about the ownership model came from being corrected.

Tauri came in for the tooling. It lets me put a desktop interface on Rust code, written with web skills I already have. For a service that normally runs out of sight, having a way to build a window onto it is convenient.

I also used AI assistance for syntax and toolchain questions. It lowered the friction of starting, but it didn’t replace reading the code and understanding why it compiled.

What I take from it

Learning a language on real work is slower at first and pays back later. Ownership is hard to appreciate from a tutorial, and much easier to appreciate when a service has to run for a long time without attention.

I still write more TypeScript than Rust. What has changed is how I read my own TypeScript. I find myself asking who owns this data, and what happens when this call fails.

Filed under