Rust如何进行模块化开发?

类似es6的模块化,Rust通过package、create、module来实现代码的模块化管理

Rust如何进行模块化开发?

Rust的代码组织包括:哪些细节可以暴露,哪些细节是私有的,作用域内哪些名称有效等等。

而这些功能被统称为模块系统,模块系统被分为(由上到下层层包含):

  • Package(包):Cargo的特性,让你构建、测试、共享create
  • Create(单元包):一个模块树,它可以产生一个library或可执行文件
  • Module(模块)、use:让你控制代码的组织、作用域、私有路径
  • Path(路径):为struct、function或module等项命名的方式

Package和Create

create的类型:

  • binary(二进制create)
  • library(库create)

其中,关于Create,还有个概念——Create Root:

  • 是源代码文件
  • Rust编译器从这里开始,组成你的Create的根Module

一个Package:

  • 包含一个Cargo.toml,它描述了如何构建这些Crates
  • 只能包含0-1个library create(库create)
  • 可以包含任意数量的binary create(二进制create)
  • 但必须至少包含一个create(library或binary)

我们使用cargo新建一个项目

然后会提示: Created binary (application) my-project package,这代表我们创建了一个二进制的应用程序,名叫my-project的package

我们进入这个文件夹:

我们可以看到src/min.rs文件,这是我们程序的入口文件,但是我们在Cargo.toml中并没有看到相关的配置:

[package]
name = "my-project"
version = "0.1.0"
edition = "2021"

# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html

[dependencies] 

这是因为cargo有一些惯例

Cargo的惯例

  • src/main.rs是binary create的create root* create的名与package名相同如果我们还有一个这个文件:src/lib.rs,那么:

  • 表明package包含一个library create

  • 它是library create的create root

  • create的名与package名相同

Cargo将会把create root文件交给rustc(rust编译器)来构建library或者binary

一个Package可以同时包含src/main.rs和src/lib.rs

一个Package也可以有多个binary create:

  • 文件放在src/bin,放在这里的每个文件都是单独的
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值