Currently, if it is possible to build rustc using vendored crates provided in tarball, it isn’t the case for cargo: some required crates are missing. But I expect that src/vendor in tarball to be generated for rustc only.
It makes building all the Rust tooling at the same time complex (for packagers that try to do it offline): the build method are too differents.
At OpenBSD, I am building rustc on one side (using vendored crates), and cargo on another side (using the same tarball). For cargo, I setup a specific build environment where all the required crates at downloaded at first (controlled) step, there are extracted in a directory, metadata for vendoring at generated, and cargo is configured to search crates in vendored directory. The list of crates is manually maintained and changed at each release.