rust-analyzer 是目前rust语言广泛在用的Language Server Protocol, 通过后台进程与VSCode等进行通信,实现代码补全和跳转等功能。
下面介绍其在VsCode setting.json中的配置项:
# rust-analyzer.cargo.features
rust-analyzer.cargo.features 这个配置项默认为空,rust-analyzer默认不识别Cargo.toml设置为features模块
以[tower](https://github.com/tower-rs/tower.git) 仓库为例,在其
```
tower
|_lib.rs
```
这个文件中通过宏有条件的导入
![](https://img2023.cnblogs.com/blog/827560/202301/827560-20230108005517501-28279293.png)
这时候Vscode这些代码是灰色的,并且提示
![](https://img2023.cnblogs.com/blog/827560/202301/827560-20230108005621581-1575787744.png)
为了让这些模块也能够使用rust-analyzer代码提示功能,则可以在Vscode的setting.json配置文件中将`rust-analyzer.cargo.features` 配置为
```
"rust-analyzer.cargo.features": [
"full"
]
```
这样子所有的feature模块就能使用代码补全了。