idea搭建rust开发环境,解决不识别Rust工程的解决办法

Posted 跨链技术践行者

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了idea搭建rust开发环境,解决不识别Rust工程的解决办法相关的知识,希望对你有一定的参考价值。

Rust 是一个由Mozilla主导开发的通用编译型编译语言。它的设计准则为"安全,并发,实用",支持函数式,并发式,过程式以及面向对象的编程风格。

Rust插件的主要特性如下:

  1. 导航特性:Go to Class、Go to Symbol、Go to Super Module、Structure、Go to Definition。
  2. 编辑器特性:代码自动完成、格式化(计划支持rustfmt)、合并行、智能按键(如自动插入匹配的符号)、自动填充后缀、基本的Intention和重构(如引入变量、重命名等)。
  3. 支持Cargo,提供了一个UI用于运行测试用例和应用程序,不过这要求在Cargo端进行一些配置

IntelliJ 是最好的使用的Java IDE之一 ,它支持各种插件,其中intellij-rust就是Rust在IntelliJ上的插件,可以使用该插件在IntelliJ上面进行Rust开发,下面就简单介绍下如何安装Rust并使用IntelliJ做为其IDE。

安装Rust

安装Rust不要直接Rust语言本身,例如使用brew install rust就只是安装了rust语言本身而已,应该安装的是rustup,rustup是rust官方版本的管理工具,是安装rust的首选。它的主要特点是:

  • 管理Rust二进制文件
  • 配置Rust工具链
  • 管理Rust相关组件
  • 只依赖bash,curl和常见的unix工具
  • 支持多平台

在使用Rust开发过程中常常是用到的工具有rustc,rust-src,cargo,这些都可以使用rustup进行管理。
其中cargo是Rust项目管理的工具,提供了一系列的工具,从项目的建立,构建到测试,运行到部署,都为Rust项目的管理提供尽可能完成的手段。
rustc是rust语言的编译器。
rust-src是rust标准库。

安装rustup:

1

curl https://sh.rustup.rs -sSf | sh

安装过程中会让选择安装方式,使用默认方式安装即可,默认安装cargo。安装之后需要设置两个目录到PATH变量中:

  • $HOME/.cargo/bin,cargo的bin目录
  • $HOME/.cargo/env,为shell配置的目录

通过rustup help可以看到rustup的相关命令,上述的默认按照并不包含组件rust-src的安装,需要单独安装组件rust-src:

1

rustup component add rust-src

这样Rust的环境安装都已经完成,在使用IntelliJ做为Rust的IDE中要用的组件包括:rustc,cargorust-src

安装IntelliJ插件

需要安装两个插件 intellij-rustintellij-tomlintellij-rust是Rust语言插件,intellij-toml是为Toml语言的插件,是为cargo的配置文件cargo.toml使用。

安装方式:Perferences.. -> Plugins 在Marketplact中直接搜索Rust

同样方式搜索toml并安装。

安装完插件之后就可以新建一个项目选择Rust:

可以看到 Toolchain location 是配置的$HOME/.cargo/bin,而Standard library是之前安装的rust-src的目录。

创建项目成功可以看到一个完整的rust项目:

解决rust无法识别目录 :

 

环境:windows10 ,已经安装rust语言插件

问题:Idea打开Rust项目目录不识别Rust工程,代码不能跳转

解决办法:修改.iml文件的内容如下,然后保存,idea会自动生成sourceFolder等相关的源码路径配置。如果Idea报找不到Cargo.toml文件,则根据提示找到项目的根Cargo.toml文件。

注意,module type 要设置为RUST_MODULE 而不是JAVA_MODULE。

<?xml version="1.0" encoding="UTF-8"?>
<module type="RUST_MODULE" version="4">
  <component name="NewModuleRootManager" inherit-compiler-output="true">
    <exclude-output />
    <content url="file://$MODULE_DIR$"/>
    <orderEntry type="inheritedJdk" />
    <orderEntry type="sourceFolder" forTests="false" />
  </component>
</module>
配置完成后,打开rust工程的目录,idea会自动将其识别为Rust工程,然后代码就可以跳转了。

下图是配置完成后xxx.iml文件的内容,其中xxx是项目的名称。

<?xml version="1.0" encoding="UTF-8"?>
<module type="RUST_MODULE" version="4">
  <component name="NewModuleRootManager" inherit-compiler-output="true">
    <exclude-output />
    <content url="file://$MODULE_DIR$">
      <sourceFolder url="file://$MODULE_DIR$/dir-xxx/src" isTestSource="false" />
      <sourceFolder url="file://$MODULE_DIR$/dir-xxx/examples" isTestSource="false" />
      <sourceFolder url="file://$MODULE_DIR$/dir-xxx/tests" isTestSource="true" />
      <sourceFolder url="file://$MODULE_DIR$/dir-xxx/benches" isTestSource="true" />
      <excludeFolder url="file://$MODULE_DIR$/dir-xxx/target" />
      <excludeFolder url="file://$MODULE_DIR$/target" />
     </content>
    <orderEntry type="inheritedJdk" />
    <orderEntry type="sourceFolder" forTests="false" />
  </component>
</module>
配置完成xxx.iml文件后,会自动更新modules.xml misc.xml vcs.xml  workspace.xml等相关的配置文件。

modules.xml文件内容示例如下。

<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
  <component name="ProjectModuleManager">
    <modules>
      <module fileurl="file://$PROJECT_DIR$/.idea/xxx.iml" filepath="$PROJECT_DIR$/.idea/xxx.iml" />
    </modules>
  </component>
</project>
备注:

xxx.iml文件的位置可能是在.idea目录下,也可能是在工程根目录下

以上是关于idea搭建rust开发环境,解决不识别Rust工程的解决办法的主要内容,如果未能解决你的问题,请参考以下文章

FinClip小程序+Rust:环境搭建

Rust学习笔记 | 01 - Rust快速入门(为什么是Rust开发环境搭建Cargo的使用HelloWorldRust依赖包crates)

Rust之旅 linux下rust环境搭建

Rust 入门搭建开发环境构建我们的第一个应用 Hello World及cargo项目

[Rust]使用MSVC工具链和VSCode搭建Rust环境

.NET番外篇Rust环境搭建+基础开发入门+Rust与.NET6C++的基础运算性能比较