Rust Crate 和 Package

一个 crate 可以包含一个或多个 Rust 模块,模块又可以包含代码,例如函数、类型和常量。

Crate 有两种类型

  • 二进制 Crate
  • 库 Crate

一个二进制 crate 是一个编译成可执行文件或多个可执行文件的 Rust 程序,并且每个可执行文件都有一个 main() 函数。

一个库 crate 不会编译成可执行文件,也没有 main() 函数。库 crate 通常定义了可以在多个项目中使用的共享功能。

Crate 可以被打包成一个 package。


在 Rust 中创建包

可以使用 Rust 内置的 Cargo 包管理器来创建包。Cargo 随 Rust 一起预装。

我们可以使用 cargo 创建一个包。一个包含一个或多个 crate,它们提供一组功能。

注意:一个包可以包含多个二进制 crate,但最多只能包含一个库 crate。


在 Rust 中创建二进制包

要创建二进制包,我们可以在终端中使用 cargo 命令。

$ cargo new hello_world --bin

输出

Created binary (application) `hello_world` package

我们使用 cargo--bin 选项创建名为 hello_world 的二进制包。这是 cargo 的默认行为。

让我们看一下 hello_world 包的内容。

hello_world
├── Cargo.toml
└── src
    └── main.rs

这里,

  • hello_world 是包目录
  • Cargo.toml 是一个包含 crate 元数据的文件,例如其名称、版本和依赖项
  • src/main.rs 是 crate 的根文件,包含二进制包的源代码

在 Rust 中创建库包

同样,我们也可以使用 cargo 在 Rust 中创建库包。

$ cargo new hello_world_lib --lib

输出

Created library `hello_world_lib` package

我们使用 cargo 和 --lib 选项创建名为 hello_world_lib 的库包。

让我们看一下 hello_world_lib 包的内容。

hello_world_lib
├── Cargo.toml
└── src
    └── lib.rs

这里,

  • hello_world_lib 是包目录
  • Cargo.toml 是一个包含 crate 元数据的文件,例如其名称、版本和依赖项
  • src/lib.rs 是 crate 的根文件,包含库包的源代码

一个包可以包含 src/main.rssrc/lib.rs。在这种情况下,它有两个 crate:一个二进制和一个库,它们的名称都与包相同。例如,

hello_world
├── Cargo.toml
└── src
    └── lib.rs
    └── main.rs

注意:Cargo 按照惯例将 crate 的根文件传递给 Rust 编译器来构建库或二进制文件。

我们的高级学习平台,凭借十多年的经验和数千条反馈创建。

以前所未有的方式学习和提高您的编程技能。

试用 Programiz PRO
  • 交互式课程
  • 证书
  • AI 帮助
  • 2000+ 挑战