Large parts of tooling dependent on cargo; for examples, lsp, analyzer, etc.

Once you take out cargo, rusts development environment becomes quite poor.

This 'language requires an eco-system' is something that I really dislike. The linker is where it should come together, not in your choices about importing external dependencies, module packaging, source code hosting options, debugger and so on.

Unfortunately, that is the way rust set up their toolchain. In many ways, and for most if not all ecosystems, I do agree with you.

This is also just a matter of work, for example, the Buck folks have put in the work so that rust-analyzer works well with projects based on it.

That's good. I generally think these kinds of tools (lsp, analyzers, etc.) should be based upon CLI tools. I'll be more open to when either projects seeking to integrate rust utilize tools such as buck or these tools can be more easily integrated into make/cmake based projects.

There is a lot of legacy code out there and I generally feel like many of the rust advocates forget how important it is to play well with legacy project setups.

For RA, it just needs a config file, Buck shipped a tool that writes it out for you.