Ржавчина: переменная среды `PATH_SEPARATOR` не определена

#rust

Вопрос:

У меня возникли проблемы с компиляцией serenity библиотеки ботов Discord. Он отлично компилируется в Linux, но в Windows происходит сбой со следующей ошибкой:

 error: environment variable `PATH_SEPARATOR` not defined
      --> C:Usersmy_user.cargoregistrysrcgithub.com-1ecc6299db9ec823proc-macro-nested-0.1.7srclib.rs:43:35
       |
    43 | include!(concat!(env!("OUT_DIR"), env!("PATH_SEPARATOR"), "count.rs"));
       |                                   ^^^^^^^^^^^^^^^^^^^^^^
       |
       = note: this error originates in the macro `env` (in Nightly builds, run with -Z macro-backtrace for more info)
 

Раньше он тоже работал в Windows, эта ошибка возникает только через несколько дней. Когда я определяю переменную среды, как PATH_SEPARATOR= в IDE (IntelliJ IDEA), ошибка заключается в том, что файл по этому пути не может быть прочитан (ошибка ОС 2).
Я пытался скомпилировать с msvc gnu помощью цепочек инструментов и, но всегда появляется ошибка.
Раньше не требовалось устанавливать переменные среды, зачем мне устанавливать их сейчас?

Комментарии:

1. Мое лучшее предположение состоит в том, что файл $OUT_DIR/count.rs не существует.

2. @loa_in_ а? программа даже не доходит до запуска, компиляция не позволяет ей работать, потому что переменная PATH_SEPARATOR не задана. Макрос env будет разрешен во время компиляции, до того, как (также во время компиляции) будет включено! решает.

3. Это не обязательно. include! сбой во время компиляции, потому the file on that path cannot be read что, как вы сказали.

4. PATH_SEPARATOR это что, Linux-штука? Я впервые слышу об этом… и да, это не определяется ни одной из установленных мной оболочек, и DuckDuckGo также не возвращает ничего особенно многообещающего. Почему вы думаете, что эта переменная должна быть определена в первую очередь?

5. Как бы то ни было, виновник — proc-macro-nested ящик. Похоже, что рассматриваемая строка была введена v0.1.7 8 месяцев назад.

Ответ №1:

Вы можете попытаться установить переменную среды Windows PATH_SEPARATOR в значение из окна Свойств системы, как показано на https://docs.oracle.com/en/database/oracle/machine-learning/oml4r/1.5.1/oread/creating-and-modifying-environment-variables-on-windows.html#GUID-DD6F9982-60D5-48F6-8270-A27EC53807D0 Установка вашей среды IDE может предотвратить это изменение, для этого действия вам могут потребоваться права администратора.

Комментарии:

1. Нет, к сожалению, это не решило проблему.

2. Затем, похоже, он ищет только файл $OUT_DIR/count.rs, который вы можете найти в своей старой установке Linux, о которой вы упомянули, скопируйте его оттуда и отредактируйте, если это файл конфигурации, они обычно помечены, и вы не можете просто вытащить его из репозитория, если это так.

3. Этот файл, скорее всего, автоматически сгенерирован, т. е. он создан на предыдущих этапах компиляции.