在上一篇关于IntelliJ Rust的博客文章中,描述了插件2020.3发布周期的主要更新–更多支持和新的Cargo功能UI。简而言之,您现在可以直接在Cargo.toml文件中切换工作区功能,并且整个项目中的代码洞察力将相应地进行调整。
在上一篇关于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)重构支持在移动文件时重新导出:
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]属性对应的打字稿代码:
立即下载intellij 2020.3体验吧!
标签:
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!