Boost Your Rust ๐Ÿฆ€ Development with Hot Reload using cargo-watch

Boost Your Rust ๐Ÿฆ€ Development with Hot Reload using cargo-watch

ยท

2 min read

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!

ย