rustlings
rustlings copied to clipboard
Bug: `rustlings lsp` not working with latest `rust-analyzer` VS Code Extension version.
Issue
On the latest version of the rust-analyzer
extension (v0.3.1463
), the rust-project.json
that is generated from running rustlings lsp
is seemingly ignored. IntelliSense, autocomplete, etc., cannot be used despite the rust-project.json
being generated and rust-analyzer
extension being enabled.
Temporary Solution
Roll back rust-analyzer
extension version to v0.3.1451
.
How to Replicate
-
Clone
rustlings
repository and installrustlings
- Download and enable
rust-analyzer
v0.3.1463
from Extension Marketplace - Run
rustlings lsp
and restart VSCode. - Attempt to edit exercise
.rs
files and observe IntelliSense not working.
System Details
rust-analyzer
VS Code Extension version: v0.3.1463
rustc --version
rustc 1.68.2 (9eb3afe9e 2023-03-27)
rustlings --version
v5.4.1
ls -la
total 20365
drwxr-xr-x 1 josep 197609 0 Apr 4 07:58 ./
drwxr-xr-x 1 josep 197609 0 Apr 2 10:29 ../
-rw-r--r-- 1 josep 197609 53199 Apr 2 10:29 .all-contributorsrc
drwxr-xr-x 1 josep 197609 0 Apr 2 10:29 .devcontainer/
-rw-r--r-- 1 josep 197609 109 Apr 2 10:29 .editorconfig
drwxr-xr-x 1 josep 197609 0 Apr 3 05:56 .git/
drwxr-xr-x 1 josep 197609 0 Apr 2 10:29 .github/
-rw-r--r-- 1 josep 197609 179 Apr 2 10:29 .gitignore
-rw-r--r-- 1 josep 197609 169 Apr 2 10:29 .gitpod.yml
drwxr-xr-x 1 josep 197609 0 Apr 2 10:29 .vscode/
-rw-r--r-- 1 josep 197609 69063 Apr 2 10:29 AUTHORS.md
-rw-r--r-- 1 josep 197609 17152 Apr 2 10:29 Cargo.lock
-rw-r--r-- 1 josep 197609 533 Apr 2 10:29 Cargo.toml
-rw-r--r-- 1 josep 197609 45620 Apr 2 10:29 CHANGELOG.md
-rw-r--r-- 1 josep 197609 4301 Apr 2 10:29 CONTRIBUTING.md
drwxr-xr-x 1 josep 197609 0 Apr 2 10:29 exercises/
-rw-r--r-- 1 josep 197609 1572 Apr 2 10:29 flake.lock
-rw-r--r-- 1 josep 197609 2032 Apr 2 10:29 flake.nix
-rw-r--r-- 1 josep 197609 42700 Apr 2 10:29 info.toml
-rwxr-xr-x 1 josep 197609 3116 Apr 2 10:29 install.ps1*
-rwxr-xr-x 1 josep 197609 4846 Apr 2 10:29 install.sh*
-rw-r--r-- 1 josep 197609 1117 Apr 2 10:29 LICENSE
-rw-r--r-- 1 josep 197609 6667 Apr 2 10:29 README.md
-rw-r--r-- 1 josep 197609 8996 Apr 4 07:56 rust-project.json
-rw-r--r-- 1 josep 197609 284 Apr 2 10:29 shell.nix
drwxr-xr-x 1 josep 197609 0 Apr 2 10:29 src/
drwxr-xr-x 1 josep 197609 0 Apr 2 10:29 target/
-rw-r--r-- 1 josep 197609 2748416 Apr 3 05:55 temp_104912_ThreadId1.pdb
-rw-r--r-- 1 josep 197609 2732032 Apr 2 20:19 temp_106948_ThreadId1.pdb
-rw-r--r-- 1 josep 197609 2748416 Apr 4 07:58 temp_37868_ThreadId1.pdb
-rw-r--r-- 1 josep 197609 2732032 Apr 2 11:49 temp_49388_ThreadId1.pdb
-rw-r--r-- 1 josep 197609 2732032 Apr 2 20:21 temp_54464_ThreadId1.pdb
-rw-r--r-- 1 josep 197609 2732032 Apr 2 20:21 temp_86324_ThreadId1.pdb
-rw-r--r-- 1 josep 197609 2732032 Apr 2 20:21 temp_88736_ThreadId1.pdb
-rw-r--r-- 1 josep 197609 1355776 Apr 2 10:31 temp_99564_ThreadId1.pdb
drwxr-xr-x 1 josep 197609 0 Apr 2 10:29 tests/
OS name and version: Windows 11 Pro, 22H2, Build 22621.1413
this is probably better suited for rust-lang/rust-analyzer but I'm still learning Rust 😓
I am also having this issue with rust-analyzer v0.3.1472
. Downgrading to v0.3.1451
solved the issue for me as well
I also met this issue, rollback to v1451 can solve this for me on Windows 11, but MACOS VENTURA doesn't have this issue.
Well, I'm not the only one having this problem. Can we expect a fix soon?
It's not an issue on our end, the rust-project.json
specification hasn't changed afaik (if it did, it'd break on non-Windows platforms as well). I'm not sure what the rust-analyzer developers' timeline or understanding of this issue is, though.
Seems like https://github.com/rust-lang/rust-analyzer/issues/14663 has been posted, backlinking it here to help those in that issue.
Found this after banging my head against the wall for a couple of hours thinking that I'm doing something wrong with rust-project.json
or the rust-analyzer
vscode plugin. Rolling back to v0.3.1451
fixed this for me too. Thank you! ❤️
So I'm looking into this right now, a simple fix for your side would be to make the root_module
entries in the generated rust-project.json
absolute paths. (digging into why this broke from our side as well though, seems a bit odd)
Okay the cause is that the canonicalization screws with our VFS, unsure what we will do here, so I recommend that your json generator should emit absolute paths for everything for now.
@Veykril that sounds like a good workaround for now, many thanks to you and @matklad for debugging this issue :)
Fixed on main in 9508e97, will push a release ~today.
Thanks for the 5.5.0 release @shadows-withal!
Using v0.3.1514
of the rust-analyzer
vscode plugin (this latest version is only available on GitHub Releases as of writing) and 5.5.0 of Rustlings the issue appears to still be present.
Here are some details of my system:
Item | Value |
---|---|
rustlings --version |
v5.5.0 |
rust-analyzer |
v0.3.1514 |
rustc --version |
rustc 1.69.0 (84c898d65 2023-04-16) |
Operating System | Windows 10 Home, version 22H2, build 19045.2965 |
After running rustlings lsp
I can see that the root_module
path values in rust-project.json
are absolute. Here's one for example:
"\\\\?\\C:\\Users\\<user>\\source\\repos\\rustlings\\exercises\\vecs\\vecs2.rs"
It's a little unexpected because I thought this rust-analyzer fix would've solved it if the 5.5.0 rustlings release didn't.
@Lexey40o Weird! I'll pass it on.
Ah, the problem is the UNC path I believe (the \\\\?\\
prefix). Our VFS will have a non UNC path indexed so it won't be able to resolve this properly. I assume you are using rust's path canonicalize function somewhere to get the absolute path which unfortunately returns UNC paths on windows ... That said, and I am sorry for not having brought that up here again afterwards but relative paths should just work again. We effectively ended up reverting the changes and took a stance for the current behavior now (as before we weren't sure which one we really wanted to stick with).
There is no decent way for us to handle different paths pointing to the same thing here unfortunately, s owe can't really do anything about unc paths and just opt to not support them currently.
@Veykril gotcha!
Reverted back to rustlings 5.4.1
and its rustlings lsp
generation is working with rust-analyzer v0.3.1514
.
That said, and I am sorry for not having brought that up here again afterwards but relative paths should just work again.
Ah okay, that's fine, I'll revert that change and push a patch version. Thanks for letting us know!
@Lexey40o could you confirm it works again with Rustlings 5.5.1?
@shadows-withal it sure is! Reran rustlings lsp
with rustlings 5.5.1
and it's generating relative paths again, which looks to be working with rust-analyzer v0.3.1514
. Thanks for the patch! 🎉
Perfect, closing it for real now
rustlings lsp
work for me in rustlings 5.5.1 and 5.4.1. It is problem about rust-analyzer.
I have change rust-analyzer v0.3.1506 to rust-analyzer v0.4.1522 Pre-Release, it is work!
Hi all,
Trying rustlings
out and this bug is happening to me in 5.6.1
.
Relevant information:
OS: Ubuntu 22.04
rustlings: 5.6.1
rustc --version
: rustc 1.74.0 (79e9716c9 2023-11-13)
rust-analyzer extension: Bug in both
-
v0.3.1748
-
v0.4.1753
(pre-release)
Steps to replicate:
- Install rustlings
- Run
rustlings lsp
- In VS Code attempt command pallet command
rust-analyzer: Restart server
(no change) - Restart VS Code (no change)
Any other steps anyone can think of?