• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

Rust学习——使用包、crate和模块管理不断增长的项目

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

一、包和Crate

  • 一个包至多只能包含一个库crate
  • 包中可以包含任意多个二进制crate
  • 包中至少包含一个crate,不区分类型
    src/main.rs 就是一个与包同名的二进制 crate 的 crate 根。

src/bin -> 二进制crate
src/lib.rs -> 库crate
src/main.rc -> 二进制crate

二、定义模块,以控制作用域与私有性
使用 mod 关键字定义模块。

沿用家庭关系的比喻,如果一个模块 A 被包含在模块 B 中,我们将模块 A 称为模块 B 的 子(child),模块 B 则是模块 A 的 父(parent)。

三、路径,用于引用模块树中的项
Rust 私有性边界:不允许外部代码了解、调用和依赖被封装的实现细节。

若希望创建一个私有函数或构造体,可以使用模块 mod。

Rust中默认所有项:函数、方法、结构体、枚举、模块和常量,都是私有的。

可以使用crate开头实现绝对路径使用模块。
也可以使用super开头来构建从父模块开始的相对路径。(类似于 ../ )方便在内嵌较深的函数下引用其他模块的函数。

四、use关键字,将名称引入作用域
使用use关键字将模块下函数显示声明,后续即可直接使用该函数,无需加上一长串的前缀。

应当创建惯用的use路径,而不是具体的某个函数,这样很不方便使用。

当使用use引入:结构体、枚举,习惯性指定他们完整的路径。

如何使用use将两个同名类型引入同一作用域?
在这个类型的路径后面,使用as关键字指定一个新的本地名称或者别名。

可以使用 pub + use 重导出名称。

标准库(std)对于你的包来说也是外部crate。

可以使用嵌套路径消除大量路径相同部分。

若想引入所有项,则可以在指定路径后使用*.(问题是会使得当前包下难以推导作用域中有什么名称以及何处定义)

五、模块分割

  1. 以分割模块命名文件
  2. 通过mod 关键字引入模块
  3. 使用模块,可以使用use 关键字设置别名

文件路径即模块路径,且命名一致。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
matlab读取excel文件中的数据发布时间:2022-07-18
下一篇:
matlab 生成图像,直接导出到excel, word(转载)发布时间:2022-07-18
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap