История изменений
Исправление ozkriff, (текущая версия) :
Про именование и [lib]/[[bin]] уже ответили.
Про «почему плохая идея» - потому что cargo основан на определенных соглашениях, а не на возможности настраивать все и вся для каждого проекта индивидуально. Он предоставляет способы обойти эти соглашения, если очень надо, но это уже костыли и не будет так удобно.
Не все проекты следуют таким соглашениям.
Судя по rust-ci.org, почти все проекты на ржавчине следуют)
Достаточно проектов, над которыми работал, организовывались иначе: директории с названиями компонентов в корне проекта. Тесты, кстати, тоже часто лежат внутри компонентов. Многие билд системы разрешают это конфигурировать - не вижу в этом ничего плохого.
Посмотри на организацию servo - https://github.com/servo/servo/blob/a25874626/Cargo.toml.
...
[dependencies.net]
path = "components/net"
[dependencies.msg]
path = "components/msg"
[dependencies.util]
path = "components/util"
[dependencies.script]
path = "components/script"
...
Компоненты лежат в директории components (никто не помешает в корень положить) в виде отдельных пакетов (личные тесты пакетов - внутри пакетов, само собой). Вроде, довольно близко к описанному тобой и не противоречит идеалогии cargo.
Исходная версия ozkriff, :
Про именование и [lib]/[[bin]] уже ответили.
Про «почему плохая идея» - потому что cargo основан на определенных соглашениях, а не на возможности настраивать все и вся для каждого проекта индивидуально. Он предоставляет способы обойти эти соглашения, если очень надо, но это уже костыли и не будет так удобно.
Не все проекты следуют таким соглашениям.
Судя по rust-ci.org - почти все проекты на ржавчине - следуют)
Достаточно проектов, над которыми работал, организовывались иначе: директории с названиями компонентов в корне проекта. Тесты, кстати, тоже часто лежат внутри компонентов. Многие билд системы разрешают это конфигурировать - не вижу в этом ничего плохого.
Посмотри на организацию servo - https://github.com/servo/servo/blob/a25874626/Cargo.toml.
...
[dependencies.net]
path = "components/net"
[dependencies.msg]
path = "components/msg"
[dependencies.util]
path = "components/util"
[dependencies.script]
path = "components/script"
...
Компоненты лежат в директории components (никто не помешает в корень положить) в виде отдельных пакетов (личные тесты пакетов - внутри пакетов, само собой). Вроде, довольно близко к описанному тобой и не противоречит идеалогии cargo.