如何在 Cargo.toml 中指定位于我的主目录中的依赖项的路径?

How to specify the path to a dependency located in my home directory in Cargo.toml?

我想使用位于我的主目录中的本地包。默认情况下,Cargo 搜索相对于 Cargo.toml 的依赖项。如果我知道我的项目相对于主文件夹的位置,我可以这样做:

[dependencies]
tools = { path = "../../rust_libs/tools" }

我并不总是知道我的项目在哪里,我想做这样的事情:

[dependencies]
tools = { path = "${HOME}/rust_libs/tools" }

如何获取 Cargo.toml 内的主路径?也许还有其他方法可以做到这一点?

如果您使用以“/”开头的路径应该会起作用,这应该被识别为绝对路径。如果路径以 ~/ 或 $HOME/ 开头并且没有 env 变量扩展,那么这些路径将看起来像相对路径,并且 cargo 将添加当前路径。我认为 Cargo.toml 不支持替换环境变量,因此您必须指定整个路径(即 /Users/vladas/rust_libs/tools

您可以尝试使用本机 linux soft links 解决此问题:

  1. 使用命令在您的 Cargo.toml 目录中创建软 link 到 ~/rust_libs/tools
ln -s ~/rust_libs/tools
  1. Cargo.toml中只使用相对路径:
[dependencies]
tools = { path = "tools" }