Почему в пакете Cargo может быть только одна библиотека? - PullRequest
0 голосов
/ 23 февраля 2019

Согласно руководству , пакеты Cargo могут иметь несколько исполняемых целей, но допускается только одна цель библиотеки.

Пакет может содержать ноль или одну клетку библиотеки и столько двоичных ящиков, сколько вы хотите.В пакете должен быть хотя бы один ящик (библиотека или двоичный файл).

Почему он ограничен одним?Каковы причины и преимущества?

1 Ответ

0 голосов
/ 23 февраля 2019

Cargo - это, прежде всего, менеджер пакетов.Таким образом, основная роль пакета заключается в определении библиотеки.

Когда мы используем ящик в качестве зависимости, мы указываем только имя пакета в нашем Cargo.toml.Поскольку может быть не более одной библиотеки, Cargo не нужно указывать, какую из них использовать.Если бы было разрешено определять несколько библиотек в одном пакете, то нам нужно было бы указать способ определения зависимостей между ними, чтобы у вас было два способа объявить зависимости (внешние пакеты и внутренние ящики), создав системуболее сложный.

С другой стороны, добавление зависимости, которая не предоставляет библиотеку, не имеет смысла, по крайней мере, с Cargo, поскольку Cargo заботится только о цели библиотеки в этом контексте.Таким образом, нет никаких оснований ограничивать другие типы целей (двоичные файлы, примеры, тесты и т. Д.) Одним.

...