RustRover 与 VS Code + rust-analyzer:Rust 工作流差异对比
作为一款专用 Rust IDE 背后的团队,我们自然很好奇 RustRover 与其他流行的 Rust 开发环境相比如何,以及每种方案的优缺点。本文是我们系列文章的第一篇,我们将探讨不同的 Rust 工作流程。
我们并非没有偏见,但我们希望客观地概述每种工具提供的功能。我们将分析每种设置的优点、局限性以及日常使用体验。我们将从最常见的设置之一 VS Code + rust-analyzer 开始。我们还会分享一些从 VS Code 切换到 RustRover 的技巧,以便您自己尝试,看看哪种工作流程最适合您。
摘要:RustRover vs VS Code + rust-analyzer
- VS Code 是通用编辑器。rust-analyzer 扩展提供 Rust 特定的补全、诊断、导航和重构功能。
- RustRover 是专业的 Rust IDE,拥有自己的代码分析引擎,并与 Cargo 项目模型集成,而其他 IDE 工具则使用该模型提供的项目上下文。
- VS Code 为您提供模块化环境,可通过扩展、设置、任务和启动配置进行自定义。
- RustRover 可能适合那些希望通过一个项目模型将代码分析、Cargo、测试、调试和重构连接起来的开发者。
- 两种设置都适用于日常 Rust 开发。更好的选择取决于您喜欢如何组织和配置工具。一些开发者喜欢同时保留两种选项,并根据手头的任务在它们之间切换。
[LOADING...]
VS Code + rust-analyzer 与 RustRover:快速概览
VS Code + rust-analyzer
VS Code 由微软于 2015 年推出,并于 2016 年发布首个正式版 1.0。它是一个通用编辑器,可以通过扩展支持不同的语言和工作流程。对于 Rust,语言支持来自 rust-analyzer,它作为语言服务器运行,并分析您打开的文件背后的 Cargo 工作区。它在 VS Code 内提供补全、诊断、内联提示、导航、快速修复和重构功能。
VS Code 允许您通过扩展、任务、启动配置、终端命令和个人设置进一步自定义您的设置。这使其成为希望使用同一编辑器处理多种语言的开发者的灵活选择。
RustRover
JetBrains 于 2023 年推出 RustRover 公开预览版,并于 2024 年正式发布。它源自 IntelliJ Rust 插件,我们将其构建为专用的专业 Rust IDE。
RustRover 使用自己的 Rust 分析引擎。当您打开 Cargo 项目时,IDE 会分析工作区并构建其 crate、依赖项、目标和代码结构的模型。这种理解支持补全、导航、检查、快速修复和项目范围的重构。
Cargo、测试、调试、数据库、Web 开发支持和版本控制也内置于 IDE 中。RustRover 在此结构内保持可配置性。您可以自定义键位映射、设置、代码样式、运行配置、工具链行为和界面,还可以 安装插件 以支持其他技术和流程。
RustRover vs VS Code:主要区别
在进入表格之前,先简要说明我们所说的“VS Code + rust-analyzer”是什么意思:我们只关注该设置中对 Rust 开发至关重要的部分,包括集成终端、任务、启动配置以及(在某些情况下)调试器扩展。我们不会涵盖所有可选扩展,只涉及本文工作流程所需的工具。
上面的概述解释了这两种设置是如何组合的。下面的表格展示了它们在导航代码、运行 Cargo 目标、测试、调试和重构时的差异。
这两种设置组合方式的差异也出现在社区讨论中。一位 Reddit 用户这样描述:
评论
由 u/metalciaga 在讨论 中
于 rust 版块
VS Code 和 RustRover 中的 AI 辅助开发
如果 AI 是您工作流程的一部分,您可以在任一环境中使用它来获取快速建议或利用更广泛项目上下文的大规模任务。您可以连接的代理、访问模型的方式以及这些代理可以使用的开发工具各不相同。以下是两种环境中 AI 功能的简要概述。
Air 还超越了 IDE。您可以通过 Web、命令行和移动端使用它,而其团队功能涵盖共享环境和自动化。在本比较中,我们重点关注 RustRover 内的 Air:运行代理并在代码旁查看它们的工作。
这些差异在实践中是什么样的?
假设您正在一个多 crate 工作区中工作。一个从二进制 crate 调用的函数定义在库 crate 中,并通过另一个模块重新导出。您需要找到它的声明、检查其用途、重命名它,并运行覆盖此功能的测试。
在 VS Code 中,您可以从 rust-analyzer 的 转到定义 操作开始找到该函数。接下来,转到引用 显示它在整个 Cargo 工作区中的使用位置,而 重命名符号 将新名称应用到相关的 Rust 文件中。更改准备就绪后,您可以通过 rust-analyzer 操作运行受影响的测试,或在集成终端中使用 Cargo。如果测试失败,rust-analyzer 可以提供 调试 操作,而兼容的调试器扩展提供调试支持。您可以将命令和调试器设置保存在任务和启动配置中,以重复工作流程。
在 RustRover 中,您可以通过 IDE 的索引项目模型跟随函数到其声明。项目 和 Cargo 工具窗口提供额外的工作区视图,而 查找用法 显示函数被引用的位置。然后,您可以使用 重命名 重构,并在应用新名称之前查看将发生哪些更改。更改准备就绪后,从边栏操作或 Cargo 工具窗口运行测试。如果失败,您可以从相同的边栏操作或运行/调试配置开始调试。RustRover 会创建一个临时配置,如果您想重用相同的参数或环境变量,可以保存它。
两种环境都可以带您从导航到完成更改。不同之处在于您遵循的路径以及工具在此过程中如何呈现更广泛的项目上下文。
我们邀请了几位通常使用 VS Code 的 Rust 开发者在 RustRover 中工作一周,并记录他们的体验日记。这是 JetBrains 的一项研究,因此他们的评论并不代表所有 Rust 开发者,但它们告诉我们很多关于切换体验的信息。
“老实说,调试器绝对是最好的部分。能够直接在年龄检查处停下来并看到真实的数字,让我恍然大悟,而不是仅仅假设数学计算是正确的。”
JetBrains RustRover 日记研究中的匿名参与者如何通过五个步骤从 VS Code 切换到 RustRover
从 VS Code 切换到 RustRover 并不意味着您必须重新学习一切。按照以下步骤自定义您的设置,让 RustRover 从第一天起就感觉熟悉。
1. 导入您的设置并选择 VS Code 键位映射
首次打开 RustRover 时,在 导入设置 对话框中选择 VS Code,并选择要迁移的内容。这可以包括您的键位映射、主题、扩展和最近的项目。
2. 打开一个熟悉的 Cargo 项目
从真实项目开始,而不是示例。如果仓库有多个 Cargo 项目,并且 RustRover 询问要附加哪些项目,请包括您希望 IDE 处理的项目。不要不检查就关闭对话框,否则仓库的某些部分可能会从项目模型中缺失。
Orhun Parmaksız,JetBrains 开发者倡导者和开源 Rust 贡献者,分享了他如何将熟悉的工作流程带入 RustRover:
“当我迁移到新的 IDE 时,我倾向于保留已经使用的键位绑定和习惯。对于 RustRover,我使用了 IdeaVim,并让 Codex 调整我的 Neovim 配置。我将结果保存在我的 dotfiles 中以便重用,VS Code 用户也可以对自己的键位绑定采取同样的方法。过渡很顺利;唯一的缺点是需要重启 IDE 才能使配置更改生效。”
您可以在 GitHub 上查看 Orhun 的 .ideavimrc 和 RustRover 配置文件。
3. 检查您的 Rust 工具链
在打开项目之前,转到 设置 | Rust,确保 RustRover 已检测到您期望使用的工具链。如果工具链版本显示版本号,并且您没有看到安装或下载 Rustup 的选项,那么您就可以继续了。
4. 等待项目加载
让首次 Cargo 同步和索引完成,然后再检查红色高亮或未解析的代码。在此阶段,RustRover 仍在构建对项目的理解,因此某些警告可能只是暂时的。
5. 运行或调试您已经熟悉的内容
选择一个熟悉的测试或目标,并从编辑器运行或调试它。这是确认项目、工具链和主要开发操作已准备就绪的快速方法。
如果您的项目使用 Cargo 功能,您可以通过 IDE 管理它们,而不是单独的 JSON 配置。有关完整的设置说明和更多 VS Code 等效项,请参阅迁移指南。
RustRover 还是 VS Code:选择哪个更合适?
如果您已经使用 VS Code 处理多种语言,更喜欢轻量级编辑器,并且希望选择自己的扩展和配置,那么继续使用 VS Code 和 rust-analyzer 可能是最合理的选择。
但如果您想要一个专业的 Rust IDE,具有集成调试器、项目范围重构、Cargo.toml 协助以及共享对 Cargo 项目相同理解的工具,那么 RustRover 感觉是自然的选择。权衡之处在于,完整的 IDE 可能比基于编辑器的设置感觉更重、更繁忙。
“VS Code 对于快速编辑仍然感觉更轻量,但当在项目中长时间工作并试图理解代码结构时,RustRover 感觉更好。”
JetBrains RustRover 日记研究中的匿名参与者
如果您仍然不确定,请在两种环境中打开您的一个项目,并尝试执行您经常执行的任务。看到每种设置的实际运行,比任何功能列表都能告诉您更多信息。
常见问题
RustRover 在底层使用 rust-analyzer 吗?
不,RustRover 不使用 rust-analyzer。它使用 JetBrains 自己的 Rust 分析引擎,该引擎直接与 IDE 的项目模型、Cargo 支持和其他内置工具集成。
RustRover 免费吗?
RustRover 对个人非商业用途免费,而商业开发需要付费许可证。免费版本具有相同的 IDE 功能,但包含匿名使用统计。但是,此数据不包括您的源代码或自定义输入。
对于初学者,哪个 Rust IDE 更好:RustRover 还是 VS Code?
RustRover 对初学者更好,因为您可以在不离开 IDE 的情况下学习和练习 Rust。免费课程如 学习 Rust 和 100 个学习 Rust 的练习 通过练习、提示和代码反馈引导您了解 Rust 概念。您还可以在我们的 Rust 入门 页面上找到教程和更多初学者资源。
切换到 RustRover 时,我是否必须从头开始重建我的工作流程?
不,RustRover 允许您导入 VS Code 键位映射、主题、扩展和最近的项目,因此在 RustRover 中运行和调试从一开始就会感觉熟悉。