我正在写一本关于embedded 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提交。我有时也需要在以后修改一些东西,因此git提交不是一个解决方案。
有没有办法在Cargo.toml中指定这种格式?来构建所有目录,或者在命令行上指定哪个目录。
发布于 2018-09-15 20:25:36
确切的解决方案可以通过示例在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"]此解决方案的一个小缺点是,成员在其目录中必须具有不同的机箱名称,因为所有成员的输出都存储在工作区根目录中的target目录中。这只是一个小问题,我很欣赏Cargo提供的灵活性。
https://stackoverflow.com/questions/52301531
复制相似问题