Boost Your Rust 🦀 Development with Hot Reload using cargo-watch


Motivation
Most of the developers with a node.js
background are pretty familiar with the package called nodemon
.
nodemon
is a tool is automatically restarting the node application whenever we change a file in a directory. This is tremendously useful during development, as we don't have to restart the application manually every time we make a change. And as we all know, we developers are lazy!
Or you may be familiar with the tool called entr
, which is a command-line tool that runs arbitrary commands when files change.
In this blog article, I will show you a similar command-line tool with the same productivity boost but for Rust. This tool is called cargo-watch
.
What is cargo-watch
?
cargo-watch
watches your Rust project for any changes and runs cargo commands when a change is detected. The installation is very simple, just run the following command:
cargo install cargo-watch
Usage examples
The simplest usage of cargo-watch
is to run the cargo run
command whenever a file in the current directory changes:
cargo watch -x run
If you want to run multiple commands, you can use the -x
flag multiple times. In the following example, we will run the cargo test
and cargo run
commands whenever a file in the current directory changes:
cargo watch -x test -x run
If you want to suppress the output of the cargo run
command, you add the -q
flag to the cargo run
command:
cargo watch -x test -x 'run -q'
With the -w
flag, you can specify a directory to watch. In the following example, we will watch the src
directory for changes:
cargo watch -w src/ -x test -x 'run -q'
Ignoring files and directories
cargo-watch
ignores per default all files and directories listed in the .gitignore
file. With the flag --no-vcs-ignores
you can disable this behavior. Secondly, cargo-watch
ignores all files and directories that are listed in the .ignore
file. With the flag --no-dot-ignores
you can also disable this behavior.
Additionally, you can ignore files and directories by using the -i
flag. This uses the Glob pattern matching syntax.
Conclusion
With cargo-watch
we have a similar tool by hand, which we are already familiar from other programming languages.
I use this tool every day and I can highly recommend it! The boost in your development productivity will be huge!
Subscribe to my newsletter
Read articles from Engin Diri directly inside your inbox. Subscribe to the newsletter, and don't miss out.
Written by

Engin Diri
Engin Diri
Cloud Native Pilgrim | Kubernetes Enthusiast | Serverless Believer | Customer Experience Architect @ Pulumi | (he/him) | CK{A,AD} |