包和 Crate

什么是crate?

Crate是Cairo在编译时最小的代码单位。即使你运行 cairo-compile 而不是 scarb build 并传递一个源代码文件,编译器还是会将那个文件认作一个 crate。Crate可以包含模块,这些模块可以在其他文件中定义,并与Crate一起被编译,这将在后面的章节中讨论。

什么是crate root?

Crate root根是lib.cairo源文件,Cairo编译器从该文件开始,并构成你的crate的根模块(我们将在“定义模块来控制作用域”部分深入解释模块)。

什么是包?

一个cairo包是一个由一个或多个crate组成的集合,其中的Scarb.toml文件描述如何构建这些板块。这使得代码被分割成更小的、可重复使用的部分,并有利于更有条理的依赖管理。

用Scarb创建一个包

你可以使用scarb命令行工具创建一个新的Cairo包。要创建一个新的软件包,运行以下命令:

scarb new my_package

该命令将生成一个名为my_package的新软件包目录,其结构如下:

my_package/
├── Scarb.toml
└── src
    └── lib.cairo
  • src/是主目录,包的所有Cairo源代码文件将存放在这里。
  • lib.cairo是crate的默认根模块,也是包的主要入口点。
  • Scarb.toml是包示例文件,它包含包的元数据和配置选项,如依赖关系、包名称、版本和作者。你可以在scarb reference上找到关于它的文档。
[package]
name = "my_package"
version = "0.1.0"

[dependencies]
# foo = { path = "vendor/foo" }

当你开发你的包时,你可能想把你的代码组织成多个Cairo源文件。你可以通过在src目录或其子目录下创建额外的.cairo文件来做到这一点。

Last change: 2023-09-20, commit: cbb0049