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

问题描述

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

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

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

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

如何在 Cargo.toml 中获取主路径?也许还有其他方法可以实现这一目标?

解决方法

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

,

您可以尝试使用本机 linux 软链接来解决此问题:

  1. 使用逗号在您的 ~/rust_libs/tools 目录中创建指向 Cargo.toml 的软链接:
ln -s ~/rust_libs/tools
  1. Cargo.toml 中只使用相对路径:
[dependencies]
tools = { path = "tools" }