Hacker News new | ask | show | jobs
by Coding_Cat 2378 days ago
For rust it's sometimes useful to split it like that, because it makes it easy to publish small subsets of your project on cargo. Say you develop a custom datastructure, or an extension on Streams.

The same applies to other languages to some degree, but crates/cargo just makes it very painless to grab crates that are on a seperate git.

1 comments

But Cargo supports having multiple crates in the same git repo. Many projects do this like regex (regex and regex-syntax are in the same repo) and openssl (openssl, openssl-sys, openssl-errors). Maybe I am missing something but it seems very easy to handle multiple closely related crates in the same repo.
What makes this possible is Cargo's "workspace" feature, which is relatively new enough that it's not hard to imagine that some older projects may simply predate it.
Would something like git subtree help here? Allow people to continue working with their individual repos but present a unified view for outsiders to follow along? We could automate this, right?
Hm, I have been doing this just fine without using the workspaces. What am I missing?
Cargo workspaces are more of an optimization in that they let all the crates in your project share the same output directory[0], so built dependencies can be shared among every crate, as opposed to each crate needing to (re)build all of its dependencies independently.

This helps to reduce compile times when working on projects where you frequently switch between crates.

[0] https://doc.rust-lang.org/book/ch14-03-cargo-workspaces.html