Rust analyzer is taking several seconds (or longer) to format files. cargo fmt can format the entire project in <50ms, and the Rust extension (RLS) is likewise near-instant
My current vscode settings in their entirety in case any of it is relevant (though this occurs with all rust-analyzer settings removed except LinkedProjects):
{
"files.watcherExclude": {
"**/target/**": true
},
"files.insertFinalNewline": true,
"files.trimFinalNewlines": true,
"editor.formatOnSave": true,
"rust-analyzer.linkedProjects": [
"lib/Cargo.toml",
"client/Cargo.toml",
"server/Cargo.toml"
],
"rust-analyzer.updates.askBeforeDownload": false,
"rust-analyzer.updates.channel": "nightly",
"rust-analyzer.diagnostics.disabled": [
"missing-unsafe"
],
"rust-analyzer.checkOnSave.enable": false,
"rust-analyzer.assist.importPrefix": "by_crate",
"rust-analyzer.trace.server": "verbose",
"rust-analyzer.trace.extension": true
}
status after saving 1 file:
workspaces:
40 packages loaded
235 packages loaded
137 packages loaded
analysis:
6354 (60mb) files
0 (0b) index symbols
4096 trees, 128 retained
55226 trees, 128 retained (macros)
1243mb total
counts:
all counts are zero
requests:
103 textDocument/formatting 4057ms
111 rust-analyzer/inlayHints 16ms
112 textDocument/semanticTokens/full/delta10ms
113 textDocument/foldingRange 1ms
115 textDocument/codeAction 0ms
117 textDocument/codeLens 0ms
118 codeLens/resolve 0ms
119 textDocument/documentSymbol 1ms
* 106 textDocument/documentSymbol 4ms
110 codeLens/resolve 4ms
RALS trace output (what I hope is the relevant portion. this is followed by ~20k lines of other stuff that doesn't appear directly relevant):
[Trace - 3:33:54 PM] Sending request 'textDocument/formatting - (478)'.
Params: {
"textDocument": {
"uri": "file:///path/to/graphics.rs"
},
"options": {
"tabSize": 4,
"insertSpaces": true,
"trimFinalNewlines": true,
"insertFinalNewline": true
}
}
[Trace - 3:33:59 PM] Received response 'textDocument/formatting - (478)' in 4780ms.
Result: [
{
"range": {
"start": {
"line": 33,
"character": 0
},
"end": {
"line": 33,
"character": 1
}
},
"newText": ""
}
]
There is no RA client output.
There don't seem to be any errors in any log anywhere, it just takes 3-15 seconds to format a file.
I would just use RLS, but RA has better auto-completion, so I'd love any advice on how to figure out what the problem is.
Edit: I tested on a completely fresh (cargo new
) project (with no settings except format on save) and it was faster (~1s on the default main.rs, 1-2 seconds on some examples I pasted from rust by example) but still dramatically slower than the Rust extension or cargo fmt.