cargo add теперь учитывает публичные зависимости существующих крейтов и не ломает им версии
06.10.2025При добавлении зависимости cargo add теперь учитывает публичные зависимости уже присутствующих в проекте крейтов. Если вы зависите от foo, а foo публично зависит от bar 1.0, будет выбрана именно bar 1.0, даже если доступна bar 2.0.
Почему это важно
Публичная зависимость — это часть контракта крейта. Если крейт объявил bar публичной, а в Cargo.toml у него bar 1.0, то при замене на bar 2.0 у вас в проекте окажутся две несовместимые версии одного крейта одновременно.
Это источник трудноуловимых ошибок: если у двух крейтов разные версии одной зависимости и у одного из них нет признаков по взаимной совместимости, компилятор выдаст ошибку о несовместимых типах, и связь проблемы с добавлением зависимости будет неочевидна.
Что изменилось по сути
Раньше выбор версии определялся только тем, что видно в текущем проекте. Теперь он учитывает ещё и то, что видно через публичные зависимости уже добавленных крейтов.
Случай, который раньше приводил к двойным версиям, теперь разрешается корректно на этапе добавления.
Оригинал
consider public dependencies when choosing a version in cargo add
Упоминаний: 1 · Просмотров: 2