Are there any performance implications for the final binary because you’re splitting it up into thousands of crates?
Functions marked #[inline] can still be handled across crates.
LTO can inline across crates but, of course, at a substantial compile time cost.