clap
. This is what it looks like when you compile the most basic example: https://movq.de/v/3ffe9bec70/claptest.txt Just for parsing command line options? Really?And this is what it looked like when I was trying to compile a simple HTTP client using
reqwest
(which appears to be the most popular library): https://movq.de/v/3ffe9bec70/reqwesttest.txt Oof. How am I supposed to keep track of all of that?The Rust standard library *aims to be small*. This means that a lot of things *must* be external libraries. (This is in stark contrast to Python, for example. You might have seen this: https://xkcd.com/353/) That explains why the
chrono
library for doing date and time stuff exists – but it doesn’t explain everything.My theory is: Since Rust has its own package management which makes it easy to publish and use packages, well, people do just that. A lot. Including pointless (IMHO) stuff like the following (got these from the log outputs above):
- https://crates.io/crates/itoa (converting integers to string, because the standard library is too slow?)
- https://crates.io/crates/ryu (same for floats)
- https://crates.io/crates/lazy_static (instantiate static values only when you need them, because ... well, why?)
- https://crates.io/crates/matches (
if
is not enough?)- https://crates.io/crates/smallvec (the performance penalty for using the standard library’s
Vec
with just a few elements must be horrible)- https://crates.io/crates/memchr (again, why not improve the standard library?)
The list goes on and on.
clap
. This is what it looks like when you compile the most basic example: https://movq.de/v/3ffe9bec70/claptest.txt Just for parsing command line options? Really?And this is what it looked like when I was trying to compile a simple HTTP client using
reqwest
(which appears to be the most popular library): https://movq.de/v/3ffe9bec70/reqwesttest.txt Oof. How am I supposed to keep track of all of that?The Rust standard library *aims to be small*. This means that a lot of things *must* be external libraries. (This is in stark contrast to Python, for example. You might have seen this: https://xkcd.com/353/) That explains why the
chrono
library for doing date and time stuff exists – but it doesn’t explain everything.My theory is: Since Rust has its own package management which makes it easy to publish and use packages, well, people do just that. A lot. Including pointless (IMHO) stuff like the following (got these from the log outputs above):
- https://crates.io/crates/itoa (converting integers to string, because the standard library is too slow?)
- https://crates.io/crates/ryu (same for floats)
- https://crates.io/crates/lazy_static (instantiate static values only when you need them, because ... well, why?)
- https://crates.io/crates/matches (
if
is not enough?)- https://crates.io/crates/smallvec (the performance penalty for using the standard library’s
Vec
with just a few elements must be horrible)- https://crates.io/crates/memchr (again, why not improve the standard library?)
The list goes on and on.
clap
. This is what it looks like when you compile the most basic example: https://movq.de/v/3ffe9bec70/claptest.txt Just for parsing command line options? Really?And this is what it looked like when I was trying to compile a simple HTTP client using
reqwest
(which appears to be the most popular library): https://movq.de/v/3ffe9bec70/reqwesttest.txt Oof. How am I supposed to keep track of all of that?The Rust standard library *aims to be small*. This means that a lot of things *must* be external libraries. (This is in stark contrast to Python, for example. You might have seen this: https://xkcd.com/353/) That explains why the
chrono
library for doing date and time stuff exists – but it doesn’t explain everything.My theory is: Since Rust has its own package management which makes it easy to publish and use packages, well, people do just that. A lot. Including pointless (IMHO) stuff like the following (got these from the log outputs above):
- https://crates.io/crates/itoa (converting integers to string, because the standard library is too slow?)
- https://crates.io/crates/ryu (same for floats)
- https://crates.io/crates/lazy_static (instantiate static values only when you need them, because ... well, why?)
- https://crates.io/crates/matches (
if
is not enough?)- https://crates.io/crates/smallvec (the performance penalty for using the standard library’s
Vec
with just a few elements must be horrible)- https://crates.io/crates/memchr (again, why not improve the standard library?)
The list goes on and on.
Yup, it is similar on NodeJS. I am not a developer of any kind, but have used it enough to know this. Probably NodeJS is worse, but Rust seems to be competing for that second place.