Rust 入门指南(rustup, cargo)
为什么使用 Rust ?
Rust 是一种系统级编程语言,rust-lang.org 有一个很棒的定义:
“
一种使每个人都能够构建可靠和高效软件的语言。
我喜欢 Rust,它不仅强大而且非常安全。它的所有权模型可以消除许多常见错误。但是对于 C#、Java 和 JavaScript 等语言的程序员来说,学习曲线可能有点陡峭。
本文旨在对 Rust 及其工具链进行简单的介绍。如果想深入地了解可以看下面的内容
Rust 网站的 Learn 部分(https://www.rust-lang.org/learn)
Herbert Wolverson 的 Hands on Rust (https://hands-on-rust.com/)
我们开始入门 Rust 吧!
首先你需要一个开发环境,你可以使用本地的环境,但我们推荐使用 https://GeekCode.cloud 云开发环境,上面有 Rust 的依赖库和编译加速功能,可以让你更方便的使用 rust 功能。打开 GeekCode 后我们选择 Rust 环境,就可以操作下面的命令了。
安装 Rust
有几种方法可以在你的系统上安装 Rust(你甚至可以在不安装的情况下试用它(https://geekcode.cloud))。有两个关键组成部分需要了解:
rustup 是一个命令行工具,它可以作为编译器的工具链。
cargo 是用于管理 projects、crates(rust 包)的命令行,并且是我们在处理 Rust 项目时最常使用的工具。
我们可以:
从 rust-lang.org 的 Getting Started 部分获取 Rust,
或者访问 rustup.rs 并按照安装说明进行操作,
最简单的方法是访问 GeekCode.cloud 使用云环境。
我们安装了 rustup 或直接使用云环境后,可以尝试以下命令:
测试你的安装
$ rustup -v
检查更新
$ rustup check
更新你的安装
$ rustup update
现在我们的 Rust 已经开始运行了,让我们进入 cargo。
Cargo — Rust 构建工具和包管理器
Cargo cli 工具是我们最常使用的工具。 它负责运行构建、运行测试和准备项目以供发布。 我们还用 cargo 打包 Rust(在 Rust 中包被称为 crates),我们可以在 crates.io 上查看全部的 crate。
首先,我们来创建一个项目,然后了解一些常见的 cargo 选项。
建立一个新项目
$ cargo new {project_name}
创建一个新的 Hello World 程序,它使用默认项目结构、*main.rs* 文件和 Cargo.toml 项目文件。
默认情况下,这是一个二进制应用程序(如果我们需要开发 library / crate,添加
-lib
选项)。默认情况下,Git 已初始化(可以使用其他开关自定义/禁用 )
最好坚持使用 _snake_case 来命名,因为这是 Rust 规范。
Cargo 基础知识
$ cargo check
验证程序结构——这不会编译我们的程序,但会确保项目文件结构正确
$ cargo build
在调试模式下构建应用程序
如果它不存在,这将在项目的根目录中创建一个 target 文件夹
添加 -release 切换到 release 模式构建(见下文)
$ cargo clean
清理(即删除)构建文件,比如构建期间生成的任何二进制文件
$ cargo run
运行程序 - 如果尚未构建,这也将构建应用程序
$ cargo test
运行项目中存在的任何测试(默认脚手架中不会有任何测试)
Cargo target — Release vs Debug
默认情况下,cargo build
和 cargo run
将在 DEBUG 模式下构建项目。要构建项目以发布到生产环境,请将 --release
参数添加到 cargo —
$ cargo [build|run] --release
当你构建一个 Rust 项目时,无论结果如何,都会创建一个 target 文件夹,并在其下方提供相关的构建配置。在 DEBUG 中构建时,文件夹结构将如下所示 -
…/project_root/target/debug/{build artefacts}
Rust 是一种编译语言,这意味着默认情况下,将使用运行的机器架构编译进行构建工作。 Rust 还支持交叉编译,允许我们构建二进制文件在其他架构上执行。
例如,Rust 编译为 WebAssembly (https://www.rust-lang.org/what/wasm)!,我们可以像这样在 cargo build 命令中添加一个目标——
$ cargo build --release --target=wasm32-unknown-unknown
这将创建以下文件夹结构(需要添加 --release
参数,和生成的子文件夹)-
…/project_root/target/wasm32-unknown-unknown/release/{build artefacts}
代码格式化
Rust 有一个内置的格式化程序,你可以阅读这里 (https://github.com/rust-lang/rustfmt)。 安装后,我们可以运行 -
$ cargo fmt
这会将代码格式化为 Rust 编码标准。 如果我们想自定义样式,可以通过 添加 rustfmt.toml 在你的项目。
Clippy — 代码提示和建议
Rust 有一个用于代码提示和指导的内置工具(即 linter),称为 clippy,详细内容在 Clippy 的 GitHub 页面(https://github.com/rust-lang/rust-clippy) 。运行 clippy 将分析代码并为我们提供建议和改进:
$ cargo clippy
我们可以通过多种方式配置 Clippy,但对于初学者使用 clippy 严格建议非常有帮助。 只需在我们的 main.rs中首行添加:
Clippy 的建议有很多级别,但默认 pedantic 级别审查,通常已经足够。
总结
我们现在应该能够创建一个新的 Rust 项目并且对 Rust 工具链、linter 和建议有一个很好的了解。
Rust 标准库虽然很棒,但我们仍需要利用 Rust 社区贡献的许多第三方库。
所以接下来,我们会继续介绍 Rust 的包管理。
Stay Rusty!
版权声明: 本文为 InfoQ 作者【王泰】的原创文章。
原文链接:【http://xie.infoq.cn/article/849eff2318f30f65e69288b4b】。文章转载请联系作者。
评论