安装配置rust

在wsl环境下安装rust及其配件

Posted by John Mactavish on June 28, 2019

前言

我最近试图写一个程序,在wsl中实现windows中回收站的功能。我使用C/C++进行编程,但是似乎难以捉摸的指针又一次把我弄晕了。于是我开始尝试rust,这个号称百分之百安全的快速高效的语言。我计划在wsl的环境中安装它。

过程

准备

网上提示通过 curl -sSf https://static.rust-lang.org/rustup.sh | sh 来安装。我不想要它下载下来直接交给sh运行,所有我只输入 curl -sSf https://static.rust-lang.org/rustup.sh 返回的信息如下 #!/bin/bash echo “The location of rustup.sh has moved.” echo “Run the following command to install from the new location:” echo “ curl https://sh.rustup.rs -sSf | sh” 提醒我,文件已经被移动到别处了。所以我输入 curl https://sh.rustup.rs -sSf 得到了rustup.sh。

自定义安装rust

rust默认会安装到用户的home目录下。我在shell脚本下没有找到指明安装位置的语句。按照网上的方法,我修改了一下~/.profile 加入了 export RUSTUP_HOME=”path” export CARGO_HOME=”path” 然后运行rustup.sh,它自动的下载好installer后可以看到安装目录已经被修改了。输入2,选择自定义安装,选择nightly版本而不是stable,因为后面必需的插件只支持nightly。否则之后会出错(我就是自动下载安装racer时出了error,无法继续编译)。

配件

之后就是必需的配件了,主要是Rust Langular Server (RLS),rustfmt和racer。

racer

racer是一个很有用的配件,以后再详细介绍。
cargo是rust的包管理器,通过
cargo install racer
可以自动安装,但是网速感人。我最后选择了自己build。
我在/tmp下建立了临时文件夹,然后
首先,我们需要下载racer的源码
git clone https://github.com/phildawes/racer.git
git会自动下载到当前位置。
然后,进入目录进行编译。
cd racer && cargo build --release (--release表示优化编译)
在target/release/racer目录里面就可以得到racer的二进制文件。
接下来。我把release移动到了rust目录里。
为了对Rust标准库进行补全,racer需要获取Rust源码路径。
在~/.profile中同理进行设置。设置名为RUST_SRC_PATH的环境变量为【path_to_your_rust_source】/src
其中【path_to_your_rust_source】表示源码所在文件夹,使用rustup获取Rust源码的情况下【path_to_your_rust_source】默认为rustup/toolchains/【your-toolchain】/lib/rustlib/src/rust/src ###  rustfmt
这个就比较简单了。
cargo install rustfmt
直接解决问题,cargo第一次使用会在github上面检查更新(fetch)需要较长的时间。
还有需要注意的是,我第一次输入这个命令的时候,显示
Blocking waiting for file lock on the git checkout
然后没有反应。似乎是因为我打开了第二个shell运行cargo而之前的那一个cargo还在运行。全部关闭之后,运行命令就可以了。 ### Rust Langular Server 【RLS】
它可以为VS Code提供包括不限于自动补全、跳转定义、重命名、跳转类型的功能支持。
rustup self update(检查rustup自己的更新)
rustup update nightly(升级工具链,并不要求设置nightly为默认,但需要保证安装了nightly工具链)
然后正式安装RLS
rustup component add rls --toolchain nightly
rustup component add rust-analysis --toolchain nightly
rustup component add rust-src --toolchain nightly
之前的RUST_SRC_PATH设置它也是需要的,我之前已经设置好了,现在就不用管了。(如果你不按步骤来的话要注意) ### VS Code
我安装的是Rust(rls),也就是下载人数最多的那一个。这只是一个插件,为VS Code提供接口支持如果你没有安装以上的rust配件,它是没有用的。理论上,打开.rs文件后插件会自动配置好。

更改cargo镜像源

在.profile中加入 export RUSTUP_DIST_SERVER=https://mirrors.ustc.edu.cn/rust-static export RUSTUP_UPDATE_ROOT=https://mirrors.ustc.edu.cn/rust-static/rustup 在~里面创建.cargo目录,目录内部创建config文件,里面写入 [source.crates-io] registry = “https://github.com/rust-lang/crates.io-index” replace-with = ‘ustc’ [source.ustc] registry = “git://mirrors.ustc.edu.cn/crates.io-index” 因为我的cargo版本,选择此方法,参考“感谢”中的第三个链接。

感谢

rust的资料在网上不是特别多的,好不容易才找到比较完善的安装教程,特别感谢以下两篇文章的帮助 [http://wiki.jikexueyuan.com/project/rust-primer/editors/before.html] [https://zhuanlan.zhihu.com/p/29975631] [https://lug.ustc.edu.cn/wiki/mirrors/help/rust-crates]

@end

```

最后附上GitHub:https://github.com/gonearewe