跳转至

包和crate

cargo new my-project 创建包


基础

一个包中至多 只能 包含一个库 crate(library crate);包中可以包含任意多个二进制 crate(binary crate);包中至少包含一个 crate,无论是库的还是二进制的。

my-project/
├── Cargo.toml
│── src/
│   ├── lib.rs          # 库crate入口
│   └── main.rs         # 二进制crate入口
├── my_lib/             # 新的库 crate 的目录
│   ├── Cargo.toml      # my_lib 子库的配置文件
│   └── src/
│       ├── lib.rs      # my_lib 子库的入口文件
│       ├── module1.rs  # 子库的一个模块
│       ├── module2.rs  # 子库的另一个模块
│       └── bin/        # 二进制 crate 目录
│           ├── get_file.rs # 二进制 crate 的入口文件
│           └── other_binary.rs # 另一个二进制 crate 的入口文件

main.rs 主应用程序的入口,调用 lib.rs 中的功能。

lib.rs 定义公共逻辑和API,是代码复用的核心。

bin/ 目录中的文件:定义额外的二进制crate,可以调用 lib.rs 中的功能,提供不同的应用程序入口。

cargo run --bin cli 运行 bin 下的 cli 二进制crate