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


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

    安装

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

    curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
    
    • 1

    在这里插入图片描述

    这将提供 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。

    fn main() {
        println!("Edit me!");
    }
    
    • 1
    • 2
    • 3

    使用 Cargo 在本地运行代码

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

    % rustc --version
    rustc 1.69.0 (84c898d65 2023-04-16)
    % cargo --version
    cargo 1.69.0 (6e9a83356 2023-04-12)
    
    • 1
    • 2
    • 3
    • 4

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

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

    1. 单击要复制的示例上的“复制到剪贴板”按钮。
    2. 使用 cargo new exercise 为你的代码创建一个新的 exercise/ 目录:
    $ cargo new exercise
         Created binary (application) `exercise` package
    
    • 1
    • 2
    1. 导航到 exercise/ 并使用 cargo run 来构建和运行二进制文件:
    $ 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
    • 2
    • 3
    • 4
    • 5
    • 6
    1. 用你自己的代码替换src/main.rs中的代码。例如:
    fn main() {
        println!("Edit me!");
    }
    
    • 1
    • 2
    • 3
    1. 使用 cargo run 来构建并运行更新后的二进制文件:
    $ 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
    • 2
    • 3
    • 4
    • 5
    1. 使用 cargo check 快速检查项目的错误,使用 cargo build 编译它而不运行它。对于正常的调试构建,将在 target/debug/ 中找到输出。使用 cargo build -releasetarget/release/ 中生成一个优化的 release build
    2. 你可以通过编辑 Cargo.toml 为你的项目添加依赖项。当运行 cargo 命令时,它将自动为你下载并编译缺少的依赖项。

    下一篇:

    【Rust 易学教程】第 1 天:Rust 基础,基本语法

  • 相关阅读:
    算法题:203. 移除链表元素(递归法、设置虚拟头节点法等3种方法)Java实现创建链表与解析链表
    持续交付中流水线构建完成后就大功告成了吗?别忘了质量保障
    vue 项目打包性能分析插件 webpack-bundle-analyzer
    Educational Codeforces Round 138 (Rated for Div. 2)
    LDR6020芯片驱动未来:TYPE-C桌面显示器的新篇章
    【C++】STL——string(两万字详解)
    【C++MiNiSTL项目开发笔记】
    TDSQL-H LibraDB初步调研
    Docker入门
    深入了解Golang中的反射机制
  • 原文地址:https://blog.csdn.net/ImagineCode/article/details/133959305