我怎样才能让货物自动重新编译更改的文件?
How can I get cargo to recompile changed files automatically?
我听说 cargo 有自动重新编译更改后的源文件的能力,但我很难弄清楚如何告诉它这样做。
目前,每次我想输入代码时,我都会手动 运行 cargo build
或 cargo run
。我宁愿简单地保存文件并在邻近的终端 window.
中查看结果
如果您仍然不知道我在说什么,我正在寻找相当于 sbt ~compile
或 sbt ~run
的货物。
它似乎很难找到,所以我开始怀疑它是否真的受支持。可能有人说 cargo 可以检测到更改的文件并重新编译它们,而他的意思是 cargo 可以检测到未更改的 文件并避免 重新编译它们, 比如 make
.
我认为区别在于 运行ning cargo run
两次不会构建代码两次,除非输入文件已更改。据我所知,Cargo 没有你想要的内置功能。您可以提交功能请求。同时,我建议您只使用 watch
. You could also use something like guard
。使用 watch
更简单,但每隔 N 秒就会 运行 您的代码。 guard
需要更多设置,但效率会更高一些。
似乎没有任何内置支持,但有一个扩展程序 (cargo-watch
) 可以使用 inotify
.
来检测更改
当我发现它时,它不适用于稳定的(或当前的)Rust,但我已经修补了它。
它仍然可以使用一些工作,但它肯定会加快 compile/fix-errors 周期。
货表
如果您正在处理保持 运行ning 的服务器项目(例如 hyper、iron 等)并且您需要在文件更改时重新启动它,您可以使用 cargo watch
。安装:
cargo install cargo-watch
然后运行:
cargo watch -x run
并且仅查看 src
文件夹中的更改并清除控制台使用:
cargo watch -c -w src -x run
有关更多示例,请参阅 cargo-watch README。
watchexec
或者,您可以使用 watchexec。安装它:
cargo install watchexec-cli
然后像这样使用它:
watchexec -r cargo run
在您 Visual Studio 代码中:转到 文件 并选中 自动保存,这将自动保存所做的更改。
另一种选择是使用 entr
ls -r | entr cargo run
这将递归列出当前目录中的所有文件。然后将它们重定向到 entr
命令,该命令监视对这些文件的更改,然后最终运行 cargo run
我在这个命令中使用 nodemon:
nodemon --watch src -e rs --exec cargo check
所有这些只是查看 src 文件夹中的所有 rs 文件和 运行 货物检查。
我听说 cargo 有自动重新编译更改后的源文件的能力,但我很难弄清楚如何告诉它这样做。
目前,每次我想输入代码时,我都会手动 运行 cargo build
或 cargo run
。我宁愿简单地保存文件并在邻近的终端 window.
如果您仍然不知道我在说什么,我正在寻找相当于 sbt ~compile
或 sbt ~run
的货物。
它似乎很难找到,所以我开始怀疑它是否真的受支持。可能有人说 cargo 可以检测到更改的文件并重新编译它们,而他的意思是 cargo 可以检测到未更改的 文件并避免 重新编译它们, 比如 make
.
我认为区别在于 运行ning cargo run
两次不会构建代码两次,除非输入文件已更改。据我所知,Cargo 没有你想要的内置功能。您可以提交功能请求。同时,我建议您只使用 watch
. You could also use something like guard
。使用 watch
更简单,但每隔 N 秒就会 运行 您的代码。 guard
需要更多设置,但效率会更高一些。
似乎没有任何内置支持,但有一个扩展程序 (cargo-watch
) 可以使用 inotify
.
当我发现它时,它不适用于稳定的(或当前的)Rust,但我已经修补了它。 它仍然可以使用一些工作,但它肯定会加快 compile/fix-errors 周期。
货表
如果您正在处理保持 运行ning 的服务器项目(例如 hyper、iron 等)并且您需要在文件更改时重新启动它,您可以使用 cargo watch
。安装:
cargo install cargo-watch
然后运行:
cargo watch -x run
并且仅查看 src
文件夹中的更改并清除控制台使用:
cargo watch -c -w src -x run
有关更多示例,请参阅 cargo-watch README。
watchexec
或者,您可以使用 watchexec。安装它:
cargo install watchexec-cli
然后像这样使用它:
watchexec -r cargo run
在您 Visual Studio 代码中:转到 文件 并选中 自动保存,这将自动保存所做的更改。
另一种选择是使用 entr
ls -r | entr cargo run
这将递归列出当前目录中的所有文件。然后将它们重定向到 entr
命令,该命令监视对这些文件的更改,然后最终运行 cargo run
我在这个命令中使用 nodemon:
nodemon --watch src -e rs --exec cargo check
所有这些只是查看 src 文件夹中的所有 rs 文件和 运行 货物检查。