Porting Hiritsu to Rust

Mar 3, 2020

Hiritsu is a tool I developed to get the resolution and aspect ratio of images. It can also be used to rename an input image to include those attributes in the filename.

An example of this in action:

$ hiritsu wallpaper.jpg
Width:  1920
Height: 1080
Ratio:  16:9

$ hiritsu --rename wallpaper.jpg
wallpaper (1920x1080) [16:9].jpg

The Python version can be found here, and the Rust port here

Benchmarking

For this benchmark I used this wallpaper from Wallhaven.cc. I ran the commands in Bash 5.0.016-1 and used the time command.

The Python version ran in 0.040s while the Rust version ran in 0.001s.

And if I’m paying really close attention, I can see the Rust output is slightly faster.

Now, obviously a simple script like this won’t show the true speed benifits of using Rust.

Rust in the Future

The language took some time to wrap my head around (pun unintended) some of the new concepts like unwrapping, matching results, and the way Rust does error handling, but the more I played with Rust, the more I liked it.

It’s sastifying to use in the same way C is, but has the comforts of a modern language like the Cargo package manager. The compile errors are clear and helpful, and editors like VSCode have great support for the language.

Of course, Python remains one of my favourite languages, but I look forward to writing more Rust in the future.