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

Cloud Native Pilgrim | Kubernetes Enthusiast | Serverless Believer | Customer Experience Architect @ Pulumi | (he/him) | CK{A,AD} |
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!




