I understand that. It's almost spelled out in my comment. But the ones that can be automatically installed by Cargo are still dependencies.
> There would be no point in listing all direct and indirect crates that a project depends on in the readme, since that list is already in Cargo.lock anyway which is meant to also be committed.
I know. But this should at the very least be acknowledged.
> Really don’t see any reason for this particular objection.
It's entirely reasonable for someone not to want tooling to automatically grab dependencies from the internet. Such people need to know which dependencies they need to provide.
Both crates.io and lib.rs surface this automatically right there on the crate's page.
The rust "culture" on transitive dependencies is actually laudably transparent: it's built right into the tools.
I personally like to keep third-party dependencies as minimal as possible, mostly to avoid getting 8 emails a day from dependabot telling me that a dependency of a dependency of a dependency has a regex denial of service attack and some dependency in the middle has a massive breaking change that prevents another dependency from being upgraded to include the fix. (Nevermind that I'm using it on the frontend, so if a user picks a bad regex they will slow down their own browser and nobody else's.)
Only if you accept one single, unflexible way of installing the software.
Cargo.lock specifies exactly which dependencies are required and in which version (down to git commit hashes and checksums). You can parse that file, way less error prone that doing it by hand (you can probably even fully automate the process of checking out the dependency repos).
Regardless: you’re right in some regards. Cargo vendor exits, so you can ship your code dependencies alongside your own code.
The reason that projects usually only list the non-Rust deps in their readme is because these need to be installed manually by the user in order to build or run the piece of software in question.
There would be no point in listing all direct and indirect crates that a project depends on in the readme, since that list is already in Cargo.lock anyway which is meant to also be committed.
Really don’t see any reason for this particular objection.