包和 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
文件来做到这一点。