Как указать путь к зависимости, расположенной в моей домашней директории в Cargo.toml?

Я хочу использовать локальный пакет, который находится в моем домашнем каталоге. По умолчанию Cargo ищет зависимости относительно Cargo.toml. Если я знаю, где находится мой проект относительно домашней папки, я могу сделать что-то вроде этого:

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

Я не всегда знаю, где находится мой проект, и я хотел бы сделать что-то вроде этого:

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

Как я могу получить домашний путь внутри Cargo.toml? Может быть, есть другие способы добиться этого?


person VladasZs    schedule 05.04.2021    source источник
comment
Вы пробовали ~/rust_libs/tools?   -  person Dmitry    schedule 05.04.2021
comment
@Дмитрий да. Он просто добавляет этот путь к пути Cargo.toml и показывает ошибку. Не удалось обновить /Users/vladas/dev/sand/rust_sand/~/rust_libs/tools   -  person VladasZs    schedule 05.04.2021


Ответы (2)


Вы можете попытаться обойти эту проблему с помощью встроенных программных ссылок Linux:

  1. Создайте мягкую ссылку на ~/rust_libs/tools в каталоге вашего Cargo.toml с помощью запятой:
ln -s ~/rust_libs/tools
  1. В Cargo.toml просто используйте относительный путь:
[dependencies]
tools = { path = "tools" }
person Dmitry    schedule 06.04.2021

Это должно работать, если вы используете путь, начинающийся с «/», который должен быть распознан как абсолютный путь. Если путь начинается с ~/ или $HOME/ и нет расширения переменной env, то эти пути будут выглядеть как относительные пути, а Cargo будет добавляться к текущему пути. Я не думаю, что Cargo.toml поддерживает подстановку переменных среды, поэтому вам придется указать весь путь (т.е. /Users/vladas/rust_libs/tools)

person transistor    schedule 05.04.2021
comment
Это работает для путей, начинающихся с '/'. Спасибо. Но при таком подходе мне все равно нужно знать имя пользователя, а также путь будет другим в Windows и Linux. Есть ли способ сделать его кроссплатформенным? - person VladasZs; 05.04.2021