01_Rust开发环境准备
安装rust环境
windows安装
rustup 是 Rust 的安装程序,也是它的版本管理程序。使用rustup来进行安装。
我是在windows上进行安装。在 RUSTUP-INIT 下载系统相对应的 Rust 安装程序,一路默认即可。其中第一步中默认的需要安装Microsoft C++ Build Tools的C++环境。准备好 C++ 环境后开始安装 Rust。一路默认,就安装完成。
(我在下载的时候下载速度非常慢。)
下载速度慢解决方法
设置环境变量
RUSTUP_DIST_SERVER=https://mirrors.ustc.edu.cn/rust-static
RUSTUP_UPDATE_ROOT=https://mirrors.ustc.edu.cn/rust-static/rustup
RUSTUP_HOME=D:\rust\.rustup
CARGO_HOME=D:\rust\.cargo

更新
更新 Rust,在终端执行以下命令即可更新:
$ rustup update
卸载
要卸载 Rust 和 rustup,在终端执行以下命令即可卸载:
$ rustup self uninstall
检查安装是否成功

运行 rustup doc 让浏览器打开本地文档。
使用vscode编辑器开发
安装rust的插件
rust-analyzer
安装完成后,在第一次打开 Rust 项目时,需要安装一些依赖,具体的状态在左下角会进行提示,包括下载、代码构建、building 等。
当插件使用默认设置时,每一次保存代码,都会出进行一次重新编译。
Even Better TOML,支持 .toml 文件完整特性Error Lens, 更好的获得错误展示One Dark Pro, 非常好看的 VSCode 主题CodeLLDB, Debugger 程序
认识Cargo
Rust 吸收了多个语言的包管理优点,提供了包管理工具Cargo。
cargo 提供了一系列的工具,从项目的建立、构建到测试、运行直至部署,为 Rust 项目的管理提供尽可能完整的手段。同时,与 Rust 语言及其编译器 rustc 紧密结合。
创建第一个新项目
$ cargo new hello_world
$ cd world_hello
cargo默认创建bin类型的项目。
Rust 项目主要分为两个类型:bin 和 lib,前者是一个可运行的项目,后者是一个依赖库项目。
项目结构:
.
├── .git
├── .gitignore
├── Cargo.toml
└── src
└── main.rs
运行项目
cargo run

cargo run 首先对项目进行编译,然后再运行,因此它实际上等同于运行了两个指令,下面我们手动试一下编译和运行项目:
编译
$ cargo build
Finished dev [unoptimized + debuginfo] target(s) in 0.00s
运行
$ ./target/debug/world_hello
Hello, world!
想要高性能的代码怎么办? 添加 --release 来编译:
cargo run --releasecargo build --release
试着运行一下我们高性能的 release 程序:
$ ./target/release/hello_world
Hello, world!
- 手动编译和运行项目
cargo check
当项目大了后,cargo run 和 cargo build 不可避免的会变慢,有没有更快的方式来验证代码的正确性呢?
cargo check 是我们在代码开发过程中最常用的命令,它的作用很简单:快速的检查一下代码能否编译通过。因此该命令速度会非常快,能节省大量的编译时间。

cargo.toml 和 cargo.lock
cargo.toml 和 cargo.lock是cargo的核心文件,他的所有活动均基于此二者。
Cargo.toml是cargo特有的项目数据描述文件。它存储了项目的所有元配置信息,如果 Rust 开发者希望 Rust 项目能够按照期望的方式进行构建、测试和运行,那么,必须按照合理的方式构建Cargo.toml。Cargo.lock文件是cargo工具根据同一项目的toml文件生成的项目依赖详细清单,因此我们一般不用修改它,只需要对着Cargo.toml文件撸就行了。
什么情况下该把 Cargo.lock 上传到 git 仓库里? 当你的项目是一个可运行的程序时,就上传 Cargo.lock,如果是一个依赖库项目,那么请把它添加到 .gitignore 中。
package 配置段落
package 中记录了项目的描述信息,典型的如下:

name 字段定义了项目名称,version 字段定义当前版本,新项目默认是 0.1.0,edition 字段定义了我们使用的 Rust 大版本。
定义项目依赖
使用 cargo 工具的最大优势就在于,能够对该项目的各种依赖项进行方便、统一和灵活的管理。
在 Cargo.toml 中,主要通过各种依赖段落来描述该项目的各种依赖项:
- 基于 Rust 官方仓库
crates.io,通过版本说明来描述 - 基于项目源代码的 git 仓库地址,通过 URL 来描述
- 基于本地项目的绝对路径或者相对路径,通过类 Unix 模式的路径来描述
这三种形式具体写法如下:
[dependencies]
rand = "0.3"
hammer = { version = "0.5.0"}
color = { git = "https://github.com/bjz/color-rs" }
geometry = { path = "crates/geometry" }
下载依赖很慢
开启命令行或全局代理
或者是修改rust的下载镜像为国内的镜像地址。
为了使用 crates.io 之外的注册服务,我们需要对 $HOME/.cargo/config.toml ($CARGO_HOME 下) 文件进行配置,添加新的服务提供商,有两种方式可以实现:增加新的镜像地址和覆盖默认的镜像地址。
增加新的镜像地址
首先是在 crates.io 之外添加新的注册服务,在 $HOME/.cargo/config.toml (如果文件不存在则手动创建一个)中添加以下内容:
[registries]
ustc = { index = "https://mirrors.ustc.edu.cn/crates.io-index/" }
这种方式只会新增一个新的镜像地址,因此在引入依赖的时候,需要指定该地址,例如在项目中引入 time 包,你需要在 Cargo.toml 中使用以下方式引入:
[dependencies]
time = { registry = "ustc" }
在重新配置后,初次构建可能要较久的时间,因为要下载更新 ustc 注册服务的索引文件,由于文件比较大,需要等待较长的时间。
此处有两点需要注意:
- cargo 1.68 版本开始支持稀疏索引,不再需要完整克隆 crates.io-index 仓库,可以加快获取包的速度,如:
[source.ustc]
registry = "sparse+https://mirrors.ustc.edu.cn/crates.io-index/"
- cargo search 无法使用镜像
覆盖默认的镜像地址
事实上,我们更推荐第二种方式,因为第一种方式在项目大了后,实在是很麻烦,全部修改后,万一以后不用这个镜像了,你又要全部修改成其它的。
而第二种方式,则不需要修改 Cargo.toml 文件,因为它是直接使用新注册服务来替代默认的 crates.io。
在 $HOME/.cargo/config.toml 添加以下内容:
[source.crates-io]
replace-with = 'ustc'
[source.ustc]
registry = "git://mirrors.ustc.edu.cn/crates.io-index"
首先,创建一个新的镜像源 [source.ustc],然后将默认的 crates-io 替换成新的镜像源: replace-with = 'ustc'。
本文来自彬彬zhidao的博客,作者:彬彬zhidao,转载请注明原文链接:https://www.cnblogs.com/binbinzhidao/p/18540335

浙公网安备 33010602011771号