Могу ли я указать структуру репозитория с одним Cargo.toml, но с несколькими версиями кода, каждая с отдельными файлами main.rs? - PullRequest
0 голосов
/ 12 сентября 2018

Я пишу книгу о встроенном Rust, используя mdbook в качестве одного git-репозитория, а затем у меня есть другой репозиторий, созданный cargo, куда я помещаю код.

Я хотел бы структурироватькод, так что он соответствует главам в книге и поэтому находится в отдельном каталоге.

Структура для книги:

├── book
├── book.toml
└── src
    ├── chapter_1.md
    ├── chapter_2.md
    ├── chapter_3.md
    ├── chapter_4.md
    ├── chapter_5.md
    ├── chapter_6.md
    └── SUMMARY.md

И структура для кода:

├── aarch64-unknown-none.json
├── Cargo.lock
├── Cargo.toml
├── layout.ld
├── Readme.md
├── chapter1
│   └── main.rs
├── chapter2
│   ├── boot.rs
│   └── main.rs
└── chapter3
    ├── boot.rs
    ├── console.rs
    └── main.rs

Я бы предпочел эту структуру, так как читатель может смотреть непосредственно на код главы, а не на поиск git commit.Мне также иногда нужно что-то изменить позже, поэтому коммиты git не являются решением.

Есть ли способ указать этот формат в Cargo.toml?Чтобы построить все каталоги или указать какой из них в командной строке.

1 Ответ

0 голосов
/ 15 сентября 2018

Точное решение можно найти во втором издании книги о ржавчине с примером.

Я реструктурировал хранилище так:

├── aarch64-unknown-none.json
├── Cargo.lock
├── Cargo.toml
├── layout.ld
├── Readme.md
├── chapter1
│   ├── Cargo.toml
│   └── main.rs
├── chapter2
│   ├── boot.rs
│   ├── Cargo.toml
│   └── main.rs
└── chapter3
    ├── boot.rs
    ├── Cargo.toml
    ├── console.rs
    └── main.rs
Файлы

Cargo.toml в каталогах chapter остаются без изменений. Только Cargo.toml в корне изменяется, чтобы содержать следующее:

[workspace]
members = ["chapter1", "chapter2", "chapter3"]

Один небольшой недостаток этого решения заключается в том, что члены должны иметь разные имена ящиков в своих Cargo.toml, поскольку выходные данные всех членов хранятся в каталоге target в корне рабочего пространства. Это только небольшая проблема, и я ценю гибкость, которую предлагает Cargo.

...