I'm trying to learn how #rustlang works
But really the dependencies system is weird I believe I download & compiled some of these already in pervious project
now i've to to do it again . 
@manpacket @epage @mikkelens
Understood Thanks for nice reply
since my machine is low end with 4GB ram and 2 core cpu which case my system to freeze at linker time [ ld ]
for not enough memory
so I can't use rust with big project or game dev such as bevy atm.
@Halano downloads should be cached somewhere in your home directory under `~/.cargo`. To avoid recompiling you can ask cargo to use the same target directory (`CARGO_TARGET_DIR`) https://doc.rust-lang.org/cargo/reference/environment-variables.html but cargo might still need to recompile it if features enabled on crates are different.
Environment Variables - The Cargo Book

@manpacket @Halano Sharing a target directory can have problems. We have a design for user level build caching; it just needs someone with time to implement.

@epage @Halano what kind of problems?

I'm using a target directory per project but check out different branches into that directory every once in a while, had it failing on me multiple times with strange errors from the linker but never managed to replicate it intentionally...

@manpacket @Halano The main one i know of is related to projects that happen to have the same artifact name.
@epage @Halano Hmm.... This might be related to my problems, I'll see if I can replicate it with that idea in mind.

@Halano Yeah, the dependencies are downloaded (or maybe they're cached as someone else mentioned?) and compiled together for each project in the "target" directory. If hard drive space is limited on your machine, you may want to consider deleting the "target" directory of older projects to restore space.
This is done for special reasons that I'm not knowledgeable enough about to explain fully.

Edit: here's a Reddit discussion about it.
https://www.reddit.com/r/learnrust/comments/gh120x/lots_of_dependencies_what_happens_at_compile_time/

@Halano as some have said, you can avoid this, but to be perfectly honest the easiest workflow is just to build as you add big dependencies and go for a break, atleast when they are as big as bevy. When I move between projects I usually do so between editions of my dependencies, meaning I can benefit from their updated versions.
If you want you can also make compile times faster, but I don’t think that is what matters to you.
@Halano I didn’t know the cargo target dir trick, but I have tried stuff like sccache. The problem I experienced with that was that linking between rust versions (which I update frequently, like most do) is prone to breaking, especially using nightly (Idk if this is related to rusts unstable ABI)
@Halano I am used to the amount of wait time of a bevy build, because this is very similar of an experience to creating a new unity project, because unity ships C# code as a part of the editor which needs to be compiled within your project before it can run. Atleast with bevy, opening the engine/editor after the first time is near-instant, where opening a unity project still takes a long while even if you’ve recently opened it and not updated.