type
Post
date
Oct 27, 2025
slug
Rust/notebook/1
summary
学习下 Rust 圣经,记录笔记
status
Published
tags
Rust
category
技术茶点
icon
password
啃书记录

1.开始

1.1.准备工作

  • 安装 rustup
    • 安装 C 编译器
      • 检查是否正确安装了 Rust
        • 未配置环境变量的情况下
        • 控制台打印:rustc 1.90.0 (1159e78c4 2025-09-14)
      • 更新与卸载
        • 查看本地文档
          • 一些其他依赖

            1.2.Hello,World!

            1.3.Hello,Cargo!

            • cargo new 默认会运行一个类似 git init 的命令
            • 编译生成的可执行文件(这些文件可以被重新生成)通常就会被写到 .gitignore
            • 如果在一个已经存在的 git 仓库中运行 cargo new,则这些 git 相关文件则不会生成;Cargo 会检测到你已经在 Git 仓库内部了,则跳过初始化新的 Git 仓库(即不会生成 .git 目录和 .gitignore 文件)。它假设你希望由外部的那个主仓库来管理你的新子项目
            • 通过运行 cargo new --vcs=git 来覆盖这些行为——告诉 Cargo,无论如何,我都要在这个新项目中创建一个新的 Git 仓库
            • 控制 VCS: --vcs 这个参数让你能够指定 Cargo 应该使用哪个版本控制系统来初始化项目
              • -vcs=git:使用 Git (默认行为)
              • -vcs=hg:使用 Mercurial (如果已安装)
              • -vcs=none使用任何版本控制系统。如果你不想要 Git 的任何文件
            • Cargo.toml 文件使用 TOML (Tom's Obvious, Minimal Language) 格式,这是 Cargo 配置文件的格式。
            • 第一行,[package],是一个片段 section 标题,表明下面的语句用来配置一个包。随着我们在这个文件增加更多的信息,还将增加其他 section。
            • 接下来的三行设置了 Cargo 编译程序所需的配置:项目的名称、项目的版本以及要使用的 Rust 版本。附录 E 会介绍 edition 的值。
            • 最后一行,[dependencies],是罗列项目依赖的 section 的开始。在 Rust 中,代码包被称为 crates。这个项目并不需要其他的 crate,不过在第二章的第一个项目会用到依赖,那时会用得上这个 section。
            • 一个简单的创建 Cargo.toml 文件的方法是运行 cargo init,它会自动为你创建该文件。
            在 hello_cargo 目录下,输入下面的命令来构建项目:
            执行项目:
            编译并运行:
            • 注意这一次并没有出现表明 Cargo 正在编译 hello_cargo 的输出。Cargo 发现文件并没有被改变,所以它并没有重新构建,而是直接运行了二进制文件。如果修改了源文件的话,Cargo 会在运行之前重新构建项目,并会出现像这样的输出:
              • Cargo.lock。这个文件记录项目依赖的实际版本。这个项目并没有依赖,所以其内容比较少。你永远也不需要手动编辑该文件;Cargo 会为你管理它。
              • 核心项目文件和目录 (由 cargo new 创建)
                • 文件/目录
                  作用
                  .
                  项目的根目录,即 hello_cargo 目录本身。
                  Cargo.toml
                  清单文件 (Manifest)。它是 Cargo 的配置文件,类似于其他语言中的 package.jsonpom.xml。它包含了项目的 元数据 (如名称、版本、作者) 以及项目所依赖的 外部库 (Dependencies)。
                  src/
                  源代码目录。所有的 Rust 源代码文件都放在这里。
                  src/main.rs
                  主源文件。它是 Cargo 默认的 可执行程序 的入口文件。你的 "Hello, world!" 代码就放在这里。
              • 构建和依赖管理文件
                • 文件/目录
                  作用
                  Cargo.lock
                  锁定文件。Cargo 使用它来精确地记录你的项目和所有依赖项所使用的 确切版本。这确保了无论何时何地构建项目,使用的依赖版本都是相同的,保证了构建的可重现性
                  target/
                  构建输出目录。所有由 Cargo 编译和构建过程中生成的文件都放在这里。你应该把这个目录添加到 .gitignore,因为它包含了临时文件和可执行文件。
              • 构建输出目录 (target/) 的内容
                • target/ 目录下的内容通常是在你运行 cargo buildcargo check 之后生成的。
                  文件/目录
                  作用
                  target/debug/
                  默认的构建目录。当你运行 cargo build 时,它会以 Debug 模式 (包含调试信息,但未完全优化) 进行编译,并将结果放在这里。
                  target/debug/hello_cargo
                  可执行文件。这是你的 Rust 源代码最终编译成的程序。运行这个文件 (例如在 Linux/macOS 上执行 ./target/debug/hello_cargo) 就会执行你的代码。
                  target/debug/deps/
                  依赖库文件。包含了编译过程中用到的各种依赖项和中间对象文件。那些带有长串哈希值 (-c454853ec2b732d6) 的文件就是链接器和编译器使用的 中间文件 (.o 文件) 和 调试信息
                  target/debug/incremental/
                  增量编译缓存。用于 加速后续构建 的缓存文件。当你只修改了一小部分代码时,Cargo 可以只重新编译那一部分,而不需要重新编译整个项目。
              • Cargo 还提供了一个叫 cargo check 的命令。该命令快速检查代码确保其可以编译,但并不产生可执行文件:
                • 通常 cargo check 要比 cargo build 快得多,因为它省略了生成可执行文件的步骤。如果你在编写代码时持续的进行检查,cargo check 可以让你快速了解现在的代码能不能正常通过编译!为此很多 Rustaceans 编写代码时定期运行 cargo check 确保它们可以编译。当准备好使用可执行文件时才运行 cargo build
              • 发布构建
                • 当项目最终准备好发布时,可以使用 cargo build --release 来优化编译项目。这会在 target/release 而不是 target/debug 下生成可执行文件。这些优化可以让 Rust 代码运行的更快,不过启用这些优化也需要消耗更长的编译时间。这也就是为什么会有两种不同的配置:一种是为了开发,你需要快速且频繁地重新构建;另一种是为用户构建最终程序,它们不会经常重新构建,并且希望程序运行得越快越好。如果你在基准测试代码的运行时间,请确保运行 cargo build --release 并使用 target/release 下的可执行文件进行测试。
                • 要在任何已存在的项目上工作时,可以使用如下命令通过 Git 检出代码,移动到该项目目录并构建:
                  Cargo 文档
                  《Rust 程序设计语言》(2/22)「切肤之爱」
                  Loading...