RUST

参考官方电子文档

安装

  • rustup安装

    • 是一个用于管理 Rust 版本和相关工具的命令行具)

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

    image-20240305152300300

    • 重启以使得PATH变量生效

      1
      source "$HOME/.cargo/env"

  • Homebrew安装(不推荐)

    1
    brew install rust
  • 验证rust

    1
    rustc --version

    image-20240305152437089

  • 更新和卸载

    • 一旦通过rustup安装 Rust ,更新到新发布的版本就很容易。从 shell 中运行以下更新脚本:
    1
    rustup update
    • 要卸载 Rust 和rustup,请从 shell 运行以下卸载脚本:
    1
    rustup self uninstall

本地文档

  • Rust 的安装还包括文档的本地副本,以便您可以离线阅读。运行如下命令以在浏览器中打开本地文档。

    1
    rustup doc
  • 每当标准库提供类型或函数并且您不确定它的作用或如何使用它时,请使用应用程序编程接口 (API) 文档来查找!

HelloWorld!

Cargo

  • 当使用 rustup 安装 Rust 时,该工具集包括 rustc 编译器、rustfmt 源代码格式化程序和 Clippy Rust linter。还可以使用Rust 包管理器Cargo来帮助下载 Rust 依赖项并构建和运行 Rust 程序。

  • 验证

    1
    cargo --version
    image-20240305160858617
  • 使用Cargo创建项目

    1
    cargo new hello_cargo
    image-20240305161200507
    • 进入hello_cargo目录并列出文件。Cargo 生成了两个文件和一个目录:一个Cargo.toml文件和一个 src目录,里面有一个main.rs文件。

      image-20240305161339608
    • 它还初始化了一个新的 Git 存储库以及一个*.gitignore*文件。cargo new如果您在现有的 Git 存储库中运行,则不会生成 Git 文件;可以使用以下覆盖此行为

      1
      cargo new --vcs=git
  • 构建和运行Cargo项目

    • 构建

      1
      cargo build
      • target/debug/hello_cargo*而不是在当前目录中创建可执行文件。

      image-20240305162242029

    • 运行

      1
      ./target/debug/hello_cargo

      image-20240305162551141image-20240305162620292

    • 构建并运行

      1
      cargo run

      image-20240305162749258

    • 检查编译错误(不产生可执行文件)

      1
      cargo check

      image-20240305163000535

    • 构建发布版本

      1
      cargo build --release
      • 此命令将在target/release而不是target/debug中创建可执行文件。这些优化使您的 Rust 代码运行得更快,但打开它们会延长程序编译所需的时间。
    • 更新包版本

      1
      cargo update
  • 产生本地包文档

    • 自己项目的api文档

      • 文档注释使用\\\以支持md格式文本,写在*.rs文件开头
      • 示例代码块会被 cargo test运行一同测试
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      /// Adds one to the number given.
      ///
      /// # Examples
      ///
      /// ```
      /// let arg = 5;
      /// let answer = my_crate::add_one(arg);
      ///
      /// assert_eq!(6, answer);
      /// ```
      pub fn add_one(x: i32) -> i32 {
      x + 1
      }
    • 项目的介绍文档

      • 使用\\!注释:为注释所属于的项(译注:如 crate、模块或函数)生成帮助文档。
      1
      2
      3
      4
      5
      6
      7
      //! # My Crate
      //!
      //! `my_crate` is a collection of utilities to make performing certain
      //! calculations more convenient.

      /// Adds one to the number given.
      // --snip--
    • 知道要使用哪些特征以及要从包中调用哪些方法和函数,每个包都有包含使用说明的文档。

      1
      cargo doc --open
      • 该命令将在本地构建所有依赖项提供的文档并在浏览器中打开它
  • 测试

    1
    cargo test
    • 具体代码略
  • 登录Cargo

    • 在发布任何 crate 之前,需要在 crates.io 上注册账号并获取一个 API token。

    • 访问位于 crates.io 的首页并使用 GitHub 账号登陆。(

    • 查看位于 https://crates.io/me/ 的账户设置页面并获取 API token。

    • 使用该 API token 运行 cargo login 命令:

      1
      cargo login <api>

    image-20240312163308887

    • 更多发布crate的内容详见doc
  • 安装第三方包

    1
    cargo install <package>