王泰

V1

2022/07/28阅读:14主题:嫩青

Rust 入门指南(rustup, cargo)

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 项目时最常使用的工具。

我们可以:

我们安装了 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 buildcargo 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 中首行添加:

#![warn(clippy::all,clippy::pedantic)]

Clippy 的建议有很多级别,但默认 pedantic 级别审查,通常已经足够。

总结

我们现在应该能够创建一个新的 Rust 项目并且对 Rust 工具链、linter 和建议有一个很好的了解。

Rust 标准库虽然很棒,但我们仍需要利用 Rust 社区贡献的许多第三方库。

所以接下来,我们会继续介绍Rust 的包管理。

Stay Rusty!


加入 GeekCode Community 参与定义 Cloud Base IDE


点击【阅读原文】访问 GeekCode

分类:

后端

标签:

后端

作者介绍

王泰
V1