Пакет сборки груза с конфликтующими функциями из того же репозитория git? - PullRequest
3 голосов
/ 07 июля 2019

У меня есть git-репозиторий (не crates.io), который имеет различные функции, назовем их A и B, которые являются взаимоисключающими - две функции представляют структуры и API с одинаковыми именами, следовательно, компиляция обоих наивно приведет кконфликты и неудачи.

Как разработчик зависимого пакета, я хочу использовать обе функции.Я могу использовать псевдонимы.Сбой, если я использую один и тот же URL-адрес хранилища git, но он работает, если в Cargo.toml я использую два разных хранилища git:

[dependencies]
my_package_A = {package = "my_package", git = "/first/url", features = ["A"]}
my_package_B = {package = "my_package", git = "/second/url", features = ["B"]}

Я хочу избежать разветвления своего хранилища с другим URL-адресом.Есть ли способ сделать это?

1 Ответ

2 голосов
/ 07 июля 2019

Функции Cargo позволяют пометить части кода как необязательно , главным образом, чтобы сделать некоторые зависимости библиотеки необязательными. Они не предназначены для использования в качестве общего механизма конфигурации программного обеспечения.

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

...