When adding a new dependency I almost always go over the source code to see what kind of performance to expect. If build.rs
is there - checking it takes a single click so yes to that too. Derive macro - less frequently, but you have to do it when documentation is non existent.
Not quite. Suppose instead of a single version of
serde
there’s now 46 versions like in https://crates.io/crates/parquet to be able to use instances derived in some other crateX
you have to use the same version ofserde
. Now, how should a crate decide which versions ofserde
to support?All 46 and all optional? Supporting that would be painful. Just the last one? crates.io is a cemetery full of dead crates, with this support strategy any handful of crates picked at random are not going to be serde-compatible with each other.
A better solution would be a better support for compile time reflection so serde doesn’t have to exist in its current state, but that’s got delayed (by big macro conspiracy :)