## 安装 - 进入 `https://www.rust-lang.org/zh-CN/learn/get-started` 正常下载即可 - 执行下载的文件 - 取消安装 Microsoft Visual Studio - 默认 1 选项安装即可 > 在安装 Rustup 时,也会安装 Rust 构建工具和包管理器的最新稳定版 ## 查看版本 使用 `cargo` 命令 - `cargo --version` 查看rust版本 - `cargo build` 可以构建项目 - `cargo run` 可以运行项目 - `cargo test` 可以测试项目 - `cargo doc` 可以为项目构建文档 - `cargo publish` 可以将库发布到 `crates.io`。 > [cargo手册](https://doc.rust-lang.org/cargo/index.html "cargo") ## 创建项目 ``` shell cargo new rust-study ``` 生成一个名为 `rust-study` 的新目录,其中包含以下文件: ``` rust-study ├─ Cargo.toml # rust 清单文件,包含项目的原数据、依赖库。 └─ src └─ main.rs # 应用代码编写文件 ``` - - - 在当前文件夹 `rust-study` 进入终端,输入以下命令 ``` shell cargo run ``` ### 若遇到报错:windows下运行rust报错error: linker `link.exe` not found > 产生原因:这个错误提示表明在你的 Windows 系统上找不到链接器 link.exe,这是 Rust 编译器所需的工具之一。在 Windows 上,Rust 默认使用 MSVC 工具链进行编译,而 link.exe 是 MSVC 工具链中的链接器。然而,你可以通过安装另一个工具链来解决这个问题,即 GNU 工具链。要安装 GNU 工具链,你可以使用 rustup 命令行工具来切换到 stable-x86_64-pc-windows-gnu 工具链。按照以下步骤操作 1. 安装 `stable-x86_64-pc-windows-gnu` 工具链 ``` shell rustup toolchain install stable-x86_64-pc-windows-gnu ``` 2. 切换到 GNU 工具链 ``` shell rustup default stable-x86_64-pc-windows-gnu ``` 3. 演示 ![演示](./assets/gif/windows%20运行rust报错error%20→%20link.exe%20not%20found.gif "windows下运行rust报错error: linker `link.exe` not found") >注意:切换到 GNU 工具链可能会导致一些与 MSVC 相关的依赖项无法使用,因此在切换工具链之前,请确保你的项目不依赖于 MSVC 特定的功能或库。 ## 添加依赖 可以在 [crates.io](https://crates.io/ "crates.io"),即 Rust 包的仓库中找到所有类别的库。 本项目以 [`ferris-says`](https://crates.io/crates/ferris-says "ferris-says") 库。 在 `Cargo.tohml` 文件中添加以下信息(从 crate 页面上获取): ```rust [dependencies] ferris-says = "0.2" ``` 运行: ```shell cargo build ``` Cargo 就会安装该依赖。 运行此命令会创建一个新文件 Cargo.lock,该文件记录了本地所用依赖库的精确版本。 要使用该依赖库,我们可以打开 main.rs,删除其中所有的内容,然后在其中添加下面这行代码: ```rust // 这样我们就可以使用 `ferris-says` crate 中导出的 `say` 函数了。 use ferris_says::say; // from the previous step use std::io::{stdout, BufWriter}; fn main() { let stdout = stdout(); let message = String::from("Hello ferris_says!"); let width = message.chars().count(); let mut writer = BufWriter::new(stdout.lock()); // as_bytes() → 将 String 转成字节切片 say(message.as_bytes(), width, &mut writer).unwrap(); } ``` 运行后结果: ![结果](./assets/images/01/ferris_says%20运行%20res.png "ferris_says 运行 res.png") ## 发布(release)构建 当项目准备好后,可以使用 `cargo build --release` 优化编译项目。会在 *target/release* 而不是 *target/debug* 下生成可执行文件。 这些优化可以让 Rust 代码运行的更快,不过启用这些优化也需要消耗更长的编译时间。 __这也就是为什么会有两种不同的配置:__ 一种是为了开发,你需要经常快速重新构建; 另一种是为用户构建最终程序,它们不会经常重新构建,并且希望程序运行得越快越好。 如果你在测试代码的运行时间,请确保运行 `cargo build --release` 并使用 *target/release* 下的可执行文件进行测试。