See also: https://github.com/rust-lang/rust/issues/19535 - Rust library sources are also useful for interactive debugging - but the most significant use case is indeed for code completion / go-to def, etc.
As for solutions, I don’t like option 2 just on its own - I don’t use rustup, so I would rather have the Rust installer (optionally) install the standard library sources. (of course for people that do use rustup, it should have that source download functionality as well). This seems to me to be the best option, short of option 1 itself, making Cargo aware of standard library dependencies.
As for std = { git="https://github.com/rust-lang/rust" }, how is that a proper solution? Won’t that just download the latest standard library sources on Git master? But those might not match the actual Rust installation being used.