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