- Between 10 thousand and one million lines, flat layout makes the most sense
rust-analyzer/
Cargo.toml
Cargo.lock
crates/
rust-analyzer/
hir/
hir_def/
hir_ty/
...
- make the root of the workspace a virtual manifest
- write all automation in a dedicated crate (example: cargo xtask)
- use
version = "0.0.0"for internal crates you don’t want to publish and extract crates you want to publish in a top-level folderlibs