idea搭建rust开发环境,解决不识别Rust工程的解决办法
Posted 跨链技术践行者
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了idea搭建rust开发环境,解决不识别Rust工程的解决办法相关的知识,希望对你有一定的参考价值。
Rust
是一个由Mozilla主导开发的通用编译型编译语言。它的设计准则为"安全,并发,实用",支持函数式,并发式,过程式以及面向对象的编程风格。
Rust插件的主要特性如下:
- 导航特性:Go to Class、Go to Symbol、Go to Super Module、Structure、Go to Definition。
- 编辑器特性:代码自动完成、格式化(计划支持rustfmt)、合并行、智能按键(如自动插入匹配的符号)、自动填充后缀、基本的Intention和重构(如引入变量、重命名等)。
- 支持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 |
|
安装过程中会让选择安装方式,使用默认方式安装即可,默认安装cargo
。安装之后需要设置两个目录到PATH变量中:
- $HOME/.cargo/bin,cargo的bin目录
- $HOME/.cargo/env,为shell配置的目录
通过rustup help
可以看到rustup的相关命令,上述的默认按照并不包含组件rust-src
的安装,需要单独安装组件rust-src
:
1 |
|
这样Rust的环境安装都已经完成,在使用IntelliJ做为Rust的IDE中要用的组件包括:rustc
,cargo
和rust-src
。
安装IntelliJ插件
需要安装两个插件 intellij-rust
和intellij-toml
, intellij-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工程的解决办法的主要内容,如果未能解决你的问题,请参考以下文章
Rust学习笔记 | 01 - Rust快速入门(为什么是Rust开发环境搭建Cargo的使用HelloWorldRust依赖包crates)
Rust 入门搭建开发环境构建我们的第一个应用 Hello World及cargo项目