一个包(package
)可以拥有多个二进制单元包及一个可选的库单元包。随着包内代码规模的增长,你还可以将代码拆分到独立的单元包(crate
)中,并将它作为外部依赖进行引用。
RUST
提供了一系列的功能来帮助我们管理代码,包括决定哪些细节是暴露的、哪些细节是私有的,以及不同的作用域的命名管理。这些功能有时被统称为模块系统(module system
),它们包括:
- 包(
package
):一个用于构建、测试并分享单元包的Cargo
功能 - 单元包(
crate
):一个用于生成库或可执行文件的树形模块结构 - 模块(
module
)及use
关键字:它们被用于控制文件结构、作用域及路径的私有性 - 路径(
path
):一种用于命名条目的方法,这些条目包括结构体、函数和模块等
有几条规则决定了包可以包含哪些东西:首先,一个包中最多只能拥有一个库单元包。其次,包可以拥有多个二进制单元包。最后,包内必须存在至少一个单元包(库单元包或二进制单元包)。
cargo new my-project
当我们执行这条命令时,Cargo
会生成一个包并创建相应的Cargo.toml
文件。Cargo
会默认将src/main.rs
视作一个二进制单元包的根节点,这个二进制单元包与包拥有相同的名字。同样地,假设包的目录中包含文件src/lib.rs
,Cargo
也会自动将其视作与包同名的库单元包的根节点。