I do wish more attention was paid to the ballooning disk space requirements for both.
I think Cargo is doing better, but I've yet to get a shared directory working for every build on a system. I shouldn't have to spend 2G per Rust project.
If it's shared, you don't know what project pulled in which dependencies so you can't clean it up. I guess this is a trade off - 2G that's easy to clean up vs ?G that isn't. The only way around would be some sort of pinning and GC like in Nix.
That said, if it's not an option, I think it'd be reasonable for people to be able to make that choice themselves...
Could be symlinked (or hardlinked?) from a central cache, though.