Узнать текущую версию ящика из ворса?

Я работаю над расширенной функцией устаревания, которая может решить, уже или будет устаревшим. Однако остается одна проблема: похоже, что в ящиках нет информации о версии. Я знаю, что могу получить текущую версию Crate, используя некоторую переменную среды, которую установит Cargo, но этого недостаточно, чтобы различать устаревшие части зависимостей.

Я могу по крайней мере получить текущий путь к ящику через ctx.sess.local_crate_source_file (как в текущем PR .

Итак, запрещая получение пути к файлу, а также поиск и анализ Cargo.lock вручную (который я считаю хрупким и хакерским), есть ли способ получить номера версий зависимостей, и если да, то как?


person llogiq    schedule 18.01.2016    source источник


Ответы (1)


Вместо этого используйте #[deprecated], см. Rust lang rfc 1270 для документации. Это стабильно, начиная с Rust 1.9. Затем компилятор выполняет работу с линтом, который вы хотите создать.

Вместо этого, чтобы реализовать то, что вы просили, не касаясь компилятора или не используя функции компилятора, является включение версии в ящик его общедоступного API и использование ее из вашего lint.

person Jan Zerebecki    schedule 24.02.2017
comment
Я написал этот RFC. И извините, в этом случае поиск и анализ Cargo.lock - лучший вариант. Спасибо, в любом случае. - person llogiq; 26.02.2017
comment
Как вы думаете, почему это также лучше, чем получать версию из API ящика, об устаревании которого вы хотите поговорить? - person Jan Zerebecki; 26.02.2017