JavaScript开发者的rust教程使用vscode调试rust
如果没有使用过vscode,你应该你不会像使用JavaScript那样发现Rust插件的广度,但vscode插件生态正在迅速的增长。最重要的是vscode具有以下功能
Visual Studio Code/vscode一出现几乎就主导了JavaScript的编辑器的地位。如果你还没有尝试过vscode,那应该去尝试一下了。
如果没有使用过vscode,你应该你不会像使用JavaScript那样发现Rust插件的广度,但vscode插件生态正在迅速的增长。最重要的是vscode具有以下功能。
代码完成/智能,内联警告,调试器,自动重构操作,自动文档工具提示跳转到定义、实现、类型等。
调试Rust的有两个主要插件rust和rust-analyzer。rust和rust-analyzer都有类似的功能,但是这两个插件似乎无法协同的工作。
我们建议使用Rust-analyzer插件,从第一天开始就很棒。对比rust可算是完美的一个插件。
如你要安装rust-analyzer,请打开你的vscode编辑器,然后按Ctrl+Shift+P
输入以下内容。或者扩展的搜索栏搜索Rust-analyzer:
ext install matklad.rust-analyzer
当安装好rust-analyzer后,rust-analyzer下载将开始下载它需要的所有依赖,现在你就可以开始使用rust-analyzer调试rust代码。
使用cargo new
或者cargo init
初始化项目Rust项目,在你需要调试的行中添加断点。然后按下F5u快捷键,即可进入rust的调试。
注意:你必须在一个结构正确的Rust项目中才能使rust-analyzer工作。您不能只打开任何.rs
文件并期望完整的IDE功能。
如果你在Rust项目中创建一个新文件,例如my_module.rs
,你会注意到vscode和 rust-analyzer做了一些事情。
rust-analyzer抱怨语法不正确,但他们不会自动完成任何内容,也不会发出明显错误代码的警告。
这是因为Rust项目依赖于入口函数main开始。也就是说,除非将文件一直导入到入口文件,例如main.rs
或lib.rs
。否则rust-analyzer无法检查文件。
配置rust-analyzer
打开你的Vscode,然后使用快捷键Ctrl+Shift+P
打开命令面板,输入settings
,你将会看到两个设置选项Open settings(JSON/UI)。您可以通过UI或JSON通过编辑您的设置。
UI是探索设置的好方法,而JSON更便于快速编辑和共享。以下设置假定你使用编辑JSON的方式进行设置。
默认情况下,rust-analyzer在保存的时侯运行cargo check
以收集项目错误和警告。cargo check
本质上只是编译你的项目寻找错误。
如果您想要更多可用的信息,那么你可以使用clippy
。Clippy是Rust世界的ESlint。你可通过运行命令rustup component add clippy
获取clippy。
您可以cargo clippy
设置为自动运行或将clippy
在rust-analyzer检查之后运行,以获取大量额外的警告和检查,包括rust-analyzer的信息。
{
"rust-analyzer.checkOnSave.command": "clippy"
}
但是这需要额外的资源并且可能变得慢一些,但这是值得的。clippy
在学习Rust时非常游泳。它经常突出显示可以更好帮助写出更好的Rust代码。
禁用嵌套提示
你可能会注意看,rust-analyzer提示信息有时候过于大量,以使你不能作出正确的判断。rust-analyzer的嵌套提示会增加太多噪音。建议关掉部分警告。
默认情况下Rust-analyzer会自动保持最新状态,每次打开项目时Rust-analyzer将执行自动更新。如果你在网络不文档情况下,可以选择关闭。
vscode-lldb
vscode-lldb扩展项目的主要关注点是C++和Rust语言,CodeLLDB包括用于向量、字符串、映射和其他标准库类型的内置可视化工具。
也就是说,它可以与大多数其他编译器生成兼容调试信息的编译语言一起使用,例如Ada、Fortran、Kotlin Native、Nim、Objective-C、Pascal、Swift和Zig。
vscode-lldb支持条件断点、函数断点、日志点、硬件数据访问断点。在集成或外部终端中启动调试器,具有指令级步进的反汇编视图。
加载的模块视图,Python脚本,用于高级可视化的 HTML 渲染,启动配置的工作区级别默认值,远程调试,反向调试。
如果你认为插件对你有帮助Ctrl+Shift+P
,然后输入以下内容安装Crates依赖管理插件:
ext install vadimcn.vscode-lldb
Crates依赖管理插件
向您显示最新版本的依赖项,并让您快速访问以更新它们。并在悬停的crate上的显示所有版本crates,点击即可切换版本。
仅当您使用crates.io的依赖时才有用。不支持来自git或其他平台的依赖。cargo.toml必须有效。
如果cargo.toml配置错误,crates插件将不会显示版本。它将通过状态栏和对话框通知您。如果你认为插件对你有帮助Ctrl+Shift+P
,然后输入以下内容安装Crates依赖管理插件:
ext install serayuzgur.crates
Search crates.io
在编辑cargo.toml时,尝试在您将依赖想中自动完成依赖的填写。这里之所以说的是尝试,是因为它并不总是有效,尽管当它成功时会非常有趣。
如果你认为插件对你有帮助Ctrl+Shift+P
,然后输入以下内容安装Crates依赖管理插件:
ext install belfz.search-crates-io