LINUX.ORG.RU

История изменений

Исправление 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.