【Rust 易学教程】学前准备:Cargo, 你好

当你开始学习 Rust 时,很快就会遇到 Cargo,它是 Rust 生态系统中用于构建和运行 Rust 应用程序的标准工具。在 《Rust 易学教程》 首篇中,我会简要概述一下 Cargo 是什么,以及它如何适应更广泛的生态系统。

安装

请按照 https://rustup.rs/ 上的说明操作。在终端中运行以下命令,然后按照说明操作。

bash 复制代码
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

这将提供 Cargo 构建工具(Cargo)和 Rust 编译器(rustc)。同时,你还将获得 rustup,它是一个命令行程序,你可以使用它安装不同的编译器版本。

在安装 Rust 之后,你应该配置你的编辑器或IDE来使用 Rust。大多数编辑器通过与rust-analyzer 来实现这一点,rust-analyzerVS CodeEmacsVim/Neovim和许多其他编辑器提供自动完成和跳转到定义功能。还有一个你可能没听说的 IDE 叫做[RustRover](https://www.jetbrains.com/rust/)

在 Debian/Ubuntu 上,你也可以通过 apt 安装 Cargo、Rust 源代码和 Rust 格式化程序。然而,这会让你得到一个过时的 Rust 版本,并可能导致意想不到的行为。命令如下:
sudo apt install cargo rust-src rustfmt

Rust 生态

Rust 的生态系统由许多工具组成,其中主要的是:

  • rustc: Rust 编译器,将 .rs 文件转换为二进制文件和其他中间格式。
  • cargo: Rust 依赖管理器和构建工具。Cargo 知道如何下载依赖项(通常托管在 https://crates.io 上),并且在构建项目时将它们传递给 rust。Cargo 还带有一个内置的测试运行器,用于执行单元测试。
  • rustup:Rust 工具链安装程序和更新程序。此工具用于在发布新版本的 Rust 时安装和更新 Rust 和 cargo。此外,rust 还可以下载标准库的文档。你可以同时安装多个版本的 Rust,并且 Rust 可以让你根据需要在它们之间进行切换。
  • Rust 有一个快速的发布计划,每六周发布一个新版本。新版本保持了与旧版本的向后兼容性,而且它们还支持新功能。
  • 有三个发布渠道: "stable", "beta", 和 "nightly"。
  • 新功能是 "nightly" 测试,"beta" 是每六周 "stable"一次。
  • 还可以从其他注册表、git、文件夹等中解析依赖项。
  • Rust 也有版本: 当前的版本是 Rust 2021。之前的版本是 Rust 2015 和 Rust 2018
    • 允许版本对语言进行向后不兼容的更改。
    • 为了防止破坏代码,版本是可选择的: 你可以通过 Cargo.toml 文件为你的 crate 选择版本。
    • 为了避免分裂生态系统,Rust 编译器可以混合为不同版本编写的代码。
    • 值得一提的是,不通过 cargo 直接使用编译器是非常罕见的,大多数用户从不这样做。
    • Cargo本身是一个非常强大和全面的工具。它具有许多高级功能,包括但不限于:
      • Project/package structure
      • 开发依赖和运行时依赖管理/缓存
      • 它还可以通过子命令插件(如cargo clippy)进行扩展。

更多阅读,请参考官方的 Cargo 手册

Rust 代码示例

《Rust 易学教程》 中,我们将主要通过可以通过浏览器执行的示例来探索 Rust 语言。这样能使得配置更容易,并确保每个人都有一致的体验。

但我仍然鼓励你安装 Cargo: 它将使你更容易进行练习。在教程的最后一部分,我们将做一个更大的练习,向你展示如何使用依赖关系,为此需要使用到 Cargo。

rust 复制代码
fn main() {
    println!("Edit me!");
}

使用 Cargo 在本地运行代码

如果你想在自己的电脑上试验这些代码,你需要首先安装Rust。按照 Rust Book 中的说明进行操作。在撰写本教程时,最新的稳定 Rust 版本号如下:

bash 复制代码
% rustc --version
rustc 1.69.0 (84c898d65 2023-04-16)
% cargo --version
cargo 1.69.0 (6e9a83356 2023-04-12)

你也可以使用任何更高的版本,因为 Rust 保持向后兼容性。

在此基础上,按照以下步骤从本文中的一个示例构建 Rust 二进制文件:

  1. 单击要复制的示例上的"复制到剪贴板"按钮。
  2. 使用 cargo new exercise 为你的代码创建一个新的 exercise/ 目录:
js 复制代码
$ cargo new exercise
     Created binary (application) `exercise` package
  1. 导航到 exercise/ 并使用 cargo run 来构建和运行二进制文件:
rust 复制代码
$ cd exercise
$ cargo run
   Compiling exercise v0.1.0 (/home/mgeisler/tmp/exercise)
    Finished dev [unoptimized + debuginfo] target(s) in 0.75s
     Running `target/debug/exercise`
Hello, world!
  1. 用你自己的代码替换src/main.rs中的代码。例如:
rust 复制代码
fn main() {
    println!("Edit me!");
}
  1. 使用 cargo run 来构建并运行更新后的二进制文件:
rust 复制代码
$ cargo run
   Compiling exercise v0.1.0 (/home/mgeisler/tmp/exercise)
    Finished dev [unoptimized + debuginfo] target(s) in 0.24s
     Running `target/debug/exercise`
Edit me!
  1. 使用 cargo check 快速检查项目的错误,使用 cargo build 编译它而不运行它。对于正常的调试构建,将在 target/debug/ 中找到输出。使用 cargo build -releasetarget/release/ 中生成一个优化的 release build
  2. 你可以通过编辑 Cargo.toml 为你的项目添加依赖项。当运行 cargo 命令时,它将自动为你下载并编译缺少的依赖项。
相关推荐
代码小书生7 分钟前
statistics,一个统计的 Python 库!
开发语言·python
小呆呆6669 分钟前
Codex 穷鬼大救星
前端·人工智能·后端
摇滚侠11 分钟前
整洁的桌面和任务栏 Java 开发工程师提效方法
java·开发语言
知识分享小能手21 分钟前
R语言入门学习教程,从入门到精通,R语言数据计算与分组统计(9)
开发语言·学习·r语言
山居秋暝LS36 分钟前
安装C++版opencv和opencv_contrib
开发语言·c++·opencv
FelixBitSoul1 小时前
缓存淘汰策略全解:从原理到手写实现(Java / Go / Python)
后端·面试
老陈说编程1 小时前
12. LangChain 6大核心调用方法:invoke/stream/batch同步异步全解析,新手也能轻松学会
开发语言·人工智能·python·深度学习·机器学习·ai·langchain
014-code1 小时前
Java 并发中的原子类
java·开发语言·并发
alphageek81 小时前
Matlab linspace函数完全指南:从基础用法到进阶技巧
开发语言·其他·matlab
AI人工智能+电脑小能手1 小时前
【大白话说Java面试题】【Java基础篇】第29题:静态代理和动态代理的区别是什么
java·开发语言·后端·面试·代理模式