VSCode编写Rust时let语句自动追加: String标注的原因
触发原因
该自动修改代码的行为由VSCode的Rust官方语言服务插件rust-analyzer提供,和VSCode原生功能无关,常见触发场景分两种:
- 补全时选中了带类型标注的片段:rust-analyzer默认在补全
let声明的右侧初始化表达式时,会提供两类补全项,一类仅补全表达式本身,另一类会自动为左侧变量插入匹配的显式类型标注。对应控制配置为rust-analyzer.completion.addTypeAnnotation,默认开启状态下,选中带类型的补全项按回车确认时,就会自动追加: String这段内容。 - 保存时自动执行代码修复:如果你的VSCode配置里开启了保存时自动应用代码操作,比如在
editor.codeActionsOnSave中配置了"source.fixAll.rust-analyzer": true,保存文件时rust-analyzer会自动执行「添加显式类型标注」的快速修复,直接修改文件内容。
注意:rust-analyzer的inlay hints(内嵌提示)功能只会在编辑器中以灰色虚字展示推断出的类型,不会修改实际代码内容,和你遇到的现象无关。
关闭方式
如果不需要自动插入类型标注的行为,可对应调整配置:
- 关闭补全自动加类型:在VSCode设置面板搜索
rust-analyzer.completion.addTypeAnnotation,取消对应勾选即可,后续补全let绑定的初始化表达式时,不会再自动插入类型标注。 - 关闭保存自动修复:打开VSCode的
settings.json配置文件,检查editor.codeActionsOnSave字段,移除Rust相关的全量自动修复规则,即可避免保存时自动追加类型标注。
内容的提问来源于stack exchange,提问作者user18209476
相关产品推荐
相关产品推荐

