I'm trying to get tab completion support for rust programs in vim going. There are many descriptions on the net how to this and none of them work out-of-the-box in my environment. The first major roadblock I keep running into is that all seem to rely on or require rustup. When I run it I get this error:

# curl https://sh.rustup.rs -sSf | sh
info: downloading installer
Warning: Not enforcing strong cipher suites for TLS, this is potentially less secure
Warning: Not enforcing TLS v1.2, this is potentially less secure
warning: it looks like you have an existing installation of Rust at:
warning: /usr/local/bin
warning: rustup should not be installed alongside Rust. Please uninstall your existing Rust first.
warning: Otherwise you may have confusion unless you are careful with your PATH
warning: If you are sure that you want both rustup and your already installed Rust
warning: then please reply `y' or `yes' or set RUSTUP_INIT_SKIP_PATH_CHECK to yes
warning: or pass `-y' to ignore all ignorable checks.
error: cannot install while Rust is installed

This is because my system's (FreeBSD) package manager installs rust (1.50) while compiling Mozilla. I hesitate going down the path of multiple rust installations and being careful with my PATH. These are the rust-related programs in /usr/local/bin I can work with:

-rwxr-xr-x    1 root  wheel  11762792 Feb 15 23:22 cargo
-rwxr-xr-x    1 root  wheel    381104 Feb 15 23:22 cargo-clippy
-rwxr-xr-x    1 root  wheel   1266240 Feb 15 23:22 cargo-fmt
-rwxr-xr-x    1 root  wheel   6830672 Feb 15 23:22 clippy-driver
-rwxr-xr-x    1 root  wheel  25513576 Feb 15 23:22 rls
-rwxr-xr-x    1 root  wheel       789 Feb 15 23:22 rust-gdb
-rwxr-xr-x    1 root  wheel      1944 Feb 15 23:22 rust-gdbgui
-rwxr-xr-x    1 root  wheel      1072 Feb 15 23:22 rust-lldb
-rwxr-xr-x    1 root  wheel      7264 Feb 15 23:22 rustc
-rwxr-xr-x    1 root  wheel   7031776 Feb 15 23:22 rustdoc
-rwxr-xr-x    1 root  wheel   7488904 Feb 15 23:22 rustfmt

Note that the rust language server rls is already present.

Is there a rustup-agnostic way of getting rust tab completion working? My vim version is 8.2.2569 and kept reasonably up-to-date. I would prefer a solution for vim instead of neovim. If it works for both, even better. I use the vim-plug plugin manager vim.plug.

  • You're saying the documentation for every Vim/Rust plugin you've seen assumes that no user would be starting with a pre-existing Rust install? That is hard to believe.
    – B Layer
    Mar 21, 2021 at 13:15
  • If you can't find help for that then here's a workaround that suppresses the install error: github.com/rust-lang/rustup/issues/953 . Unless there's something like Python's venv/virtualenv I'm not sure if you have many choices except a) uninstall existing installation or b) get comfortable with using PATH to control things (e.g. install a new version to /usr/local/bin or equivalent and put that in your path before /usr/bin). b) is really not that hard and done all the time for various things. It's easy to reverse, temporarily disable, etc.
    – B Layer
    Mar 21, 2021 at 13:24
  • FYI, I meant to say Python's pyenv not venv. Anyways, here's what looks to be useful information about existing Rust installations vs rustup: users.rust-lang.org/t/cannot-install-rustup-alongside-rust/… (Better outcome, though, would be someone here who can tell you how to use what you already have. Good luck.)
    – B Layer
    Mar 21, 2021 at 13:38
  • @BLayer Well, I started with github.com/rust-lang/rls#setup where step 1 is installing rustup. Then there are plugins (e.g. from prabirshrestha) which need code referencing 'cmd': {server_info->['rustup', 'run', 'nightly', 'rls']},. It is a twisty little maze of plugins and I have lost orientation. Maybe even misdiagnosed the root cause.
    – Jens
    Mar 21, 2021 at 13:39
  • Well, there's a fair chance there's someone here with experience with this who can tell you how to avoid rustup. Otherwise, you might want to read what I linked. Fingers crossed. :)
    – B Layer
    Mar 21, 2021 at 13:43


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Browse other questions tagged or ask your own question.