Rust箱子和包
- crate 的类型和定义:Rust 有两种类型的 crate:二进制 crate(编译成可执行文件,有
main()
函数)和库 crate(定义共享功能,不编译成可执行文件)。 - 创建 Rust package:使用 Cargo 包管理器创建 packages,一个 package 可包含多个 crate(二进制或库),但最多只有一个库 crate。
- package 结构和内容:package 目录包括
Cargo.toml
文件(存储元数据)和src
目录(包含源代码,如main.rs
或lib.rs
),一个 package 可同时包含二进制和库 crate。
一个 crate 可以包含一个或多个 Rust 模块,这些模块中又可以包含代码,例如函数、类型和常量。
crate 有两种类型:
- 二进制 crate
- 库 crate
二进制 crate 是一个编译成一个或多个可执行文件的 Rust 程序,每个可执行文件都有一个 main()
函数。
库 crate 不编译成可执行文件,也没有 main()
函数。库 crate 通常定义了可在多个项目中使用的共享功能。
crates 可以被捆绑在一起,形成一个 package。
在 Rust 中创建 Package
可以使用内置于 Rust 中的 Cargo 包管理器 来创建 packages。Cargo 与 Rust 一起预装。
我们可以使用 cargo 来创建一个 package。一个 package 包含一个或多个提供一组功能的 crates。
注意: 一个 package 可以包含许多二进制 crate,但最多只能有一个库 crate。
在 Rust 中创建二进制 Package
要创建二进制 package,我们可以在终端中使用 cargo
命令。
$ cargo new hello_world --bin
输出
Created binary (application) `hello_world` package
我们使用 cargo
和 --bin
选项创建了一个名为 hello_world
的二进制 package。这是 cargo 的默认行为。
让我 们看看 hello_world
package 的内容。
hello_world
├── Cargo.toml
└── src
└── main.rs
这里,
hello_world
是 package 目录Cargo.toml
是一个包含有关 crate 的元数据的文件,如其名称、版本和依赖关系src/main.rs
是 crate 的根目录,包含二进制 package 的源代码
在 Rust 中创建库 Package
同样,我们可 以使用 cargo 在 Rust 中创建一个库 package。
$ cargo new hello_world_lib --lib
输出
Created library `hello_world_lib` package
我们使用 cargo 和 --lib
选项创建了一个名为 hello_world_lib
的库 package。
让我们看看 hello_world_lib
package 的内容。
hello_world_lib
├── Cargo.toml
└── src
└── lib.rs
这里,
hello_world_lib
是 package 目录Cargo.toml
是一个包含有关 crate 的元数据的文件,如其名称、版本和依赖关系src/lib.rs
是 crate 的根目录,包含库 package 的源代码
一个 package 可以包含 src/main.rs
和 src/lib.rs
。在这种情况下,它有两个 crates:一个二进制和一个库,两者都与 package 同名。例如,
hello_world
├── Cargo.toml
└── src
└── lib.rs
└── main.rs
注意: 按照惯例,Cargo 会将 crate 的根文件传递给 Rust 编译器来构建库或二进制文件。