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

Viewed 2358

I want to use a local package which is located in my home directory. By default, Cargo searches for dependencies relative to Cargo.toml. If I know where my project is located relative to the home folder, I can do something like this:

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

I don't always know where my project is located and I would like to do something like this:

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

How can I get the home path inside of Cargo.toml? Maybe there are other ways to achieve this?

2 Answers

You can try to workaround this issue with native linux soft links:

  1. Create a soft link to ~/rust_libs/tools in your Cargo.toml's directory using commad:
ln -s ~/rust_libs/tools
  1. In Cargo.toml just use relative path:
[dependencies]
tools = { path = "tools" }

It should work if you use a path that starts with '/' which should be recognized as an absolute path. If the path starts with ~/ or $HOME/ and there is no env variable expansion, then those paths will look like a relative path, and cargo will prepend the current path. I don't think Cargo.toml supports substituting environment variables, so you will have to specify the whole path (ie. /Users/vladas/rust_libs/tools)

Related