std is not a dumping ground for features that are not fundamental to using Rust. Hence why the available collections are sparse, and why there’s a TCP socket but no HTTP server (unlike, say, the Java std). New functionality is added by RFC, because everyone (except for
#![no_std] crates and the embedded people) links
Not all libs are “random libs”. Quite a few crates, which include things more languages have as part of their std, are controlled directly by Rust itself (see
num, and the pseudonymous
lazy-static). The only reason they’re out-of-tree is because they are not tied to Rust’s six-week release schedule. These crates make similar breakage guarantees though, by way of “an almost fanatical devotion to” semver, which is the Rust way.
Mind, I believe that things like random number generation, a regex engine, and a math library do not belong in
std. Rust is not batteries included.
lazy-static, however, is such a simple and widely-used feature that an argument can be made for putting it in
std. Hence the bikes we are presently shedding.