Okay so I hope that I describe this well enough. But I am wondering if when you compile what happens in this scenario.
lets say we have
libc.rlib have a dependency on
liba.rlib. And then
libc.rlib has a dependency on
libb.rlib is a compiled library and has
liba.rlib compiled into it when
libc.rlib compiles will it compile another copy of
liba.rlib? Or does cargo download the source of all dependancies not the already compiled library then compiles each from their source so you don’t get duplicates?
Duplicate is probably not the correct verbiage here since it kind of implies there may be some sort of conflict. I am not suggesting that since however it is done the compiler seems to handle things. It is just really a question out of curiosity, in the end I suppose the only negative that could come from what I am calling a duplicate is a slightly larger lib/bin file.
If the latter is true and libraries are compiled from source individually and not brought in as precompiled then is the compiler smart enough to only compile the portions of the library that are needed? Meaning it only compiles the modules of a library that you specified you were using with a
use expression. For example if my code only has
use std::io; will the entire
std library get compiled into my lib/bin or just that module?