Rust个人学习之包&模块

对于像我这种初学者来说,Rust 的各种包、模块的逻辑还是需要梳理一下的,想梳理好这部分,需要先弄明白四个对象类型:包、单元包、模块、路径。

包 (package)

一个用于构建、测试并分享单元包的 Cargo 功能。
从概念来看,包中必须要有单元包,在 Cargo 中可以使用如下命令建立一个包,已 modtest 为例:

cargo new modtest

最终会在环境里面建立如下内容:

#cargo new modtest
     Created binary (application) `modtest` package
# tree modtest
modtest
├── Cargo.toml
└── src
    └── main.rs

1 directory, 2 files

包中默认包含了一个配置文件 Cargo. Toml 和一个 src 目录,src 目录中包含了一个名为 main. Rs 的文件,这个文件就是默认的根单元包,这也意味着一个包中必须要包含至少一个单元包。

单元包(crate)

一个用于生成库或可执行文件的树形模块结构。单元包分为二进制单元包、库单元包,上面介绍的 main. rs 就是一个二进制单元包,执行编译后会生成一个可执行的二进制文件,库单元包一般放在 lib. rs 中。如果想创建一个带有库单元包的包,可以使用如下命令:

cargo new libtest --lib

–lib : 生成一个带有库单元包的包
–bin: 生成一个带有二进制单元包的包(默认)
会生成如下内容:

# cargo new libtest --lib
     Created library `libtest` package
# tree ./libtest/
./libtest/
├── Cargo.toml
└── src
    └── lib.rs

1 directory, 2 files

对于一个包中单元包还有如下一些限制

- 一个包中必须要包含至少一个单元包
- 单元包有两种类型:二进制单元包(编译后生成二进制程序)、库单元包(编译后生成库)
- 一个包中最多只能有一个库单元包,可以有多个二进制单元包
- 单元包中包含多个模块,Rust编译时使用的入口文件称作单元包的根节点/根模块
<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值