Зачем Rust нужны и пакеты, и рабочие области? - PullRequest
2 голосов
/ 27 мая 2020

Меня немного смущает существование трех верхних уровней в иерархии модулей Rust и почему они все нужны. Если я правильно понимаю:

  • Ящики - это простые проекты, содержащие несколько модулей, и каждый ящик является либо библиотекой, либо двоичным файлом.
  • Пакеты содержат один или несколько ящиков с максимальным количеством одна библиотека.
  • Рабочие области - это группа пакетов.

Я понимаю необходимость держать несколько ящиков вместе, если они разрабатываются вместе, поэтому для меня имеют смысл либо пакеты, либо рабочие области, но я не понимаю, почему оба должны существовать и почему должно быть максимум 1 ограничение библиотеки для пакетов. Каковы преимущества этого способа?

Я прочитал Почему пакет Car go может иметь только одну целевую библиотеку? , в котором дается объяснение для 1 контейнера библиотеки на пакет правило, но это сбило меня с толку, потому что у вас все еще могут быть пакеты с двоичными файлами и, что еще хуже, без библиотек. Если пакеты должны быть абстракцией для Car go, менеджера пакетов, зачем вообще разрешать в них двоичные файлы? Зачем разрешать пакеты без единой библиотеки внутри? Можете ли вы импортировать пакет без библиотеки в качестве зависимости?

...