One of my favorite tools I use almost daily is entr(1), an inotify(7) based task runner. When combined with find or your favorite "rewrite it in Rust" implementation, it becomes a powerful tool for tightening the feedback loop during development. I throw it in a neovim terminal buffer off to the side and hack away.

Python Testing

fd -g '*.py' | entr -c pytest tests/

Python Typechecking

fd -g '*.py' | entr -c mypy /_

Go Testing

fd -g '*.py' | entr -c go test ./...

Rust Testing

fd -g '*.rs' | entr -c cargo test

Usually only a problem for Python, but if executing all tests in PWD are too slow, I replace /_/folder/nothing with a specific file. It's easy enough to ctrl-c the entr process and modify the end.

I could probably combine it with parallel for better performance in some situations if the test runner doesn't already offer it, but I don't think it's really necessary.