Ohhnews

分类导航

$ cd ..
Jetbrains Blog原文

RustRover 与 VS Code + rust-analyzer:Rust 工作流差异对比

#rustrover#vs code#rust-analyzer#rust 开发#ide

作为一款专用 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 目标、测试、调试和重构时的差异。

工作流程领域VS Code + rust-analyzerRustRover
Rust 代码分析Rust 特定分析来自 rust-analyzer 语言服务器,它通过 VS Code 扩展运行。RustRover 不使用 rust-analyzer。它使用 JetBrains 自己的 Rust 分析引擎,并与 IDE 的项目模型集成。
导航rust-analyzer 提供诸如转到定义和转到引用等操作。您可以将它们与 VS Code 的资源管理器和工作区搜索一起使用。RustRover 通过其索引项目模型提供声明和用法导航。项目 (Project) 和 Cargo 工具窗口提供额外的工作区视图。
Cargo 和运行代码您可以在集成终端中运行 Cargo 命令,或通过 rust-analyzer 启动支持的目标。任务可以保存您经常使用的命令。您可以从编辑器或 Cargo 工具窗口运行目标。RustRover 创建运行配置,您可以保存和调整这些配置。
测试您可以通过 rust-analyzer 操作、Cargo 命令或 VS Code 任务运行测试。您可以从编辑器或 Cargo 工具窗口运行测试,并在 IDE 的测试运行器中查看结果。
调试Rust 调试需要兼容的扩展,例如 CodeLLDB 或 Microsoft C/C++。启动配置可以保存您的调试器设置。Rust 调试内置于 IDE 中,并通过用于目标和测试的相同运行/调试配置工作。
检查和重构rust-analyzer 提供诊断、快速修复、重命名和其他重构操作。Cargo Check 或 Clippy 可以提供额外反馈。RustRover 将内置检查、快速修复和重构工具与来自 Cargo Check 或 Clippy 的反馈相结合。您可以在应用项目范围的更改之前查看受影响的用法。

这两种设置组合方式的差异也出现在社区讨论中。一位 Reddit 用户这样描述:

评论
由 u/metalciaga 在讨论 中
于 rust 版块

VS Code 和 RustRover 中的 AI 辅助开发

如果 AI 是您工作流程的一部分,您可以在任一环境中使用它来获取快速建议或利用更广泛项目上下文的大规模任务。您可以连接的代理、访问模型的方式以及这些代理可以使用的开发工具各不相同。以下是两种环境中 AI 功能的简要概述。

领域VS CodeRustRover
AI 工作流程VS Code 支持内联建议、聊天、规划、多文件编辑和代理驱动的任务。JetBrains AI 提供代码建议和其他 IDE 内功能,而 Air 允许您在 RustRover 内运行代理驱动的任务
代理选择您可以使用 GitHub Copilot、Claude 和 Codex 等代理提供商。Air 可与 Junie、Claude Agent、Codex、GitHub Copilot 和 OpenCode 等代理配合使用。您还可以通过 ACP 连接其他兼容代理。
模型和账户您可以使用 GitHub Copilot 计划中包含的模型,使用自己的 API 密钥连接受支持的提供商,或使用受支持的本地模型。您可以使用 JetBrains AI、受支持的提供商订阅或您自己的 API 密钥。可用选项取决于您选择的代理和提供商。
开发工具和上下文代理可以处理工作区代码、错误、测试、终端以及通过 MCP 连接的工具。您可以在 RustRover 内运行代理,并使用 IDE 的项目和代码工具查看其更改。从 RustRover 2026.3 开始,代理还可以 通过 MCP 控制调试器。

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 中运行和调试从一开始就会感觉熟悉。