我正在使用mdbook
作为一个git存储库编写一本有关嵌入式Rust的书,然后我在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 commits。有时候我有时还需要修改一些内容,因此git commits不是解决方案。
是否可以在Cargo.toml中指定此格式?要构建所有目录或在命令行上指定哪个目录。
答案 0 :(得分:2)
确切的解决方案可以在second edition of the Rust book中找到示例。
我这样重组存储库:
├── 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
文件保持不变。仅修改根目录中的Cargo.toml
,使其包含以下内容:
[workspace]
members = ["chapter1", "chapter2", "chapter3"]
此解决方案的一个小缺点是,成员的Cargo.toml
中必须具有不同的板条箱名称,因为所有成员的输出都存储在工作空间根目录的target
目录中。这只是一个小问题,我感谢Cargo提供的灵活性。