IntelliJ IDEA 2020.3提供了许多实用的功能,例如调试时的交互式提示,Git暂存支持,对Java 15记录和密封类的扩展支持等等。它简化了端点,框架和事件探查器的日常工作。通过基于机器学习技术的更好的代码完成,更直观和有用的新的“Welcome”屏幕以及更好的拼写和语法检查,整个UX得到了改进。简而言之,一切都更好!
在上一篇关于IntelliJ Rust的博客文章中,描述了插件2020.3发布周期的主要更新–更多支持和新的Cargo功能UI。简而言之,您现在可以直接在Cargo.toml文件中切换工作区功能,并且整个项目中的代码洞察力将相应地进行调整。
现在,让我们看一下已经对该功能进行的改进,以及该插件在过去几个月中获得的其他更新:
- 关于cargo功能的更多代码见解
- Rustfmt作为默认格式化程序
- 重构方面的改进
- 用于名称解析的新实验引擎
- cargo生成项目模板
- WASM项目支持
- 其他新闻
更多关于Cargo功能的代码见解
IntelliJ Rust现在提供完成建议,并提供Cargo.toml中所有功能的导航。您还可以从Rust代码中的cfg或 cfg_attr属性跳转到功能声明:
Rustfmt作为默认格式化程序
如果您希望Rustfmt作为代码的默认格式化程序,请在“Settings / Preferences | Languages & Frameworks | Rust | Rustfmt中,选中“Use rustfmt instead of built-in formatter "复选框。
当前,此选项在重新格式化选区时不适用。如果您选择一个区域并调用Reformat Code(Ctrl+Alt+L在Linux / Windows和⌥⌘LmacOS上),则将使用IDE的格式化程序。
重构方面的改进
-
现在,移动(F6)重构支持在移动文件时重新导出:
如果在编辑器中选择一段代码,然后调用Move,则在建议要移动的项目时,重构将考虑您的选择。
impl现在,相关-s与项目一起移动,而与相关impl– s的项目一起分组,以便在重构对话框中更轻松地导航:
现在,您可以使用“移动”将文件放置到另一个板条箱中,甚至移动多个文件和目录。
而且,Move现在能够检测可见性冲突(并在需要时公开移动的项目),以及在移动过程中可能发生的其他编译错误,例如E0116:为当前板条箱或E0117:只能为任意类型实现当前包装箱中定义的特征。
- 除了Move外,我们还添加了一个新的Inline(Ctrl+Alt+N在Linux / Windows和⌥⌘NmacOS上),用于局部变量的重构:
用于名称解析的新实验引擎
我们已经开始重新设计名称解析引擎的一部分。该算法的较新版本(也称为名称解析2.0)处于实验状态。如果您准备尝试一下,请启用“Settings / Preferences | Languages & Frameworks | Rust”复选框。
我们的新算法使用定点迭代方法,旨在为复杂的全局导入(use foo::*)和重新导出(use foo as bar)提供更好的支持。它还将允许插件正确扩展即将发布的宏2.0。
同时,新算法解决了一些现有的宏相关问题。例如,它改善了将宏扩展为另一个宏的定义的代码的解析度。它还解决了包含文件中的宏扩展问题。
以下代码片段给出了新引擎如何处理复杂解析的示例:
代码
请注意,新算法只适用于顶层项目,所以局部变量和类型推理功能不会受到影响。
如果你对新算法的实现细节感兴趣,你可以在这个票据中找到更长的解释。
这个功能还处于早期开发阶段,所以我们鼓励您尝试一下,如果您有任何问题,请告诉我们。请使用插件的问题跟踪器:只需选择一段有问题的代码,然后调用帮助|创建新问题。
Cargo生成项目模板
该插件的用于创建新项目的向导已通过另外两个模板WebAssembly Lib和Procedural Macro进行了增强,并且可以选择添加其他Git存储库作为模板来与cargo-generate一起使用。
WASM项目支持
您是否正在一起使用Rust和WebAssembly?以下是已经可用的功能:
- WebAssembly Lib模板可帮助您基于wasm-pack-template快速创建新项目。
- 新的wasm-pack配置使您可以在不离开IDE的情况下运行wasm-pack命令。
使用WebAssembly Lib模板创建项目时,插件会自动添加以下类型的Build配置:
您可以以与任何其他IDE配置相同的方式使用wasm-pack配置,包括从“帮助” |“配置”中调用它。运行任何内容(按Ctrl两次)。
-
在Go to generated declaration允许您从导航#[wasm_bindgen]属性对应的打字稿代码: