附录A Rust开发环境指南

A.1 无须安装环境也可以玩转Rust

不需要在本地安装 Rust,也可以玩转 Rust。官方提供了在线的PlayGroud 环境:https://play.rust-lang.org/,如图A-1所示。你只需要有网络,打开浏览器,输入此网址,就可以方便地玩转Rust。

图A-1:Playground示意

Rust并没有提供方便的交互式运行(Read-eval-print-loop,REPL)环境,虽然也有第三方库,但并不好用。所以 Playgroud 暂时就是最佳的选择,也许以后会有更好用的REPL工具。

PlayGroud的功能很丰富,你可以方便地查看编译后的ASM、LLVM IR和MIR,如图A-2所示。

单击MIR按钮,就可以看到输出了MIR代码。PlayGroud还可以选择Rust的不同版本,比如Stable、Beat和Nightly,也可以选择编译模式,例如,Debug和Release。

图A-2:可以选择要编译的目标格式

A.2 在本地安装Rust

Rust工具集里包含了两个重要的组件:rustc和cargo。

· rustc,是Rust的编译器。

· cargo,是Rust的包管理器,包含构建工具和依赖管理。

Rust的工具集分为以下三类版本:

· Nightly,通常称之为“夜版”。它是Rust日常开发的主分支,其中包含了一些特性是不稳定的,有可能会改。

· Beta,测试版。该版本是每六周发布一次,其中只包含Nightly版本中被标记为稳定的特性。

· Stable,稳定版。该版本也是每六周发布一次,基于修复了已发现Bug的最新Beta版来发布。

开发人员一般是基于 Stable版本来开发的,但是 Nightly版本包含很多新的特性,一些第三方库有时也会用到Nightly版本。

A.2.1 安装Rust

Rust为我们提供了非常方便的安装工具:rustup,此工具和Ruby的rbenv、Python的pyenv,以及Node的nvm类似。

通过执行以下命令来安装rustup:

也可以通过参数指定默认使用Nightly版本:

此工具是全平台通用的,所以不管是Windows,还是Mac或Ubuntu,都适用。rustup会在Cargo目录下安装rustc、cargo、rustup,以及其他一些标准工具。类UNIX平台默认安装于$HOME/.cargo/bin,Windows平台默认安装于%USERPROFILE%\.cargo\bin。

安装完毕,可以通过输入如下命令检测:

如果能看见终端显示出rust的最新版本号,则安装成功。

rustup可以帮助你管理本地的多个编译器版本,通过rustup default命令指定一个默认的rustc版本:

或者

通过指定日期,rustup会自动下载相应的编译器版本来安装,如果报错,可以换一个日期,直到成功为止。你还可以通过执行rustup-h 来查看关于rustup的其他帮助。

A.2.2 修改国内源

国内有些地区访问Rustup的服务器不太顺畅,可以配置中国科学技术(USTC)的Rustup镜像。

(1)设置环境变量。

(2)设置cargo使用的国内镜像。

在CARGO_HOME目录下(默认是~/.cargo)建立一个名叫config的文件,内容如下:

A.3 在Docker中使用Rust

在你的Dockerfile中添加如下配置:

如果你不想使用Nightly版本,可以将nightly换成stable。如果你想指定固定的nightly版本,则可以再添加如下一行命令:

A.4 Rust IDE或编辑器

IDE有很多选择,比如Visual Studio Code、IntelliJ IDEA等。

当然,你也可以用你最熟悉的编辑器:Emacs、Emacspace、Vim、Atom等。

A.5 开发依赖工具介绍

A.5.1 Racer代码补全

Racer是Rust代码补全库,很多编辑器都需要安装它(Interllij IDEA Rust已经默认包含了代码补全功能,但并非基于Racer,而是基于其自己实现的相关语言AST):

代码补全需要源代码。以前需要下载源代码,手动放到某处并定期更新,现在有了rustup很方便:

之后需要配置环境变量为:

A.5.2 RLS

RLS 是Rust Language Server的简写,微软提出编程语言服务器的概念,将IDE的一些编程语言相关的部分由单独的服务器来实现,比如代码补全、跳转定义、查看文档等。这样,不同的IDE或编辑器只需要实现客户端接口即可。

RLS是Rust官方提供的,不过现在只有Visual Studio Code支持,并且需要在系统中安装nightly版本的Rust(不必启用)。

RLS的安装请查阅项目README[1],也是rustup轻松完成。但因为目前部分功能还依赖于racer来实现,需要配置racer的环境变量(不必安装)。

A.5.3 cargo 插件

作为Rust 最常用的工具,cargo 提供对项目的依赖管理、build、文档生成、发布等功能支持,还可以通过插件的方式扩展。下面这几个就是必装的cargo 插件。

clippy

可以分析你的源代码,检查代码中的Code Smell。可以通过rustup工具安装clippy。

rustfmt

可以帮助你统一代码风格,团队开发中推荐使用。使用cargo可以方便地安装:

cargo fix

从1.29版本开始,Cargo自带子命令 cargo fix,可以帮助开发者自动修复编译器中有警告的代码。


[1] https://github.com/rust-lang-nursery/rls#setup.