Rust lib.rs 有什么用,看这一篇就够了

导航

  • 一、Rust lib.rs 文件有什么用
  • 二、实战
    • 1、案例一
    • 2、案例2
      • (1)修改目录下mod.rs文件
      • (2)修改lib.rs文件

一、Rust lib.rs 文件有什么用

按文件描述,他就是一个库文件,整个package只能有一个,那实战中它到底有什么用?不要它行不行

lib.rs 文件通常用于定义的公共接口和模块结构

其实我认为,Rust对 文件和函数 的视角和Java、Golang不太一样,把(文件,函数)都看成一个个(模块,模块条目),按(模块、模块条目)来设置可见性,类似public还是private的效果

那每一个模块和模块条目,能否被别的模块使用,我们就需要在lib.rs文件中进行定义引入,这样才,才,才可以使用引用的模块(文件)和模块条目(函数)

二、实战

我们来实战一下,先以一个最简单的例子,

1、案例一

一个package里面有三个文件,分别为lib.rs,main.rs,main2.rs。
请添加图片描述

假设,我们新建的文件是main2.rs,里面我们写了新函数

请添加图片描述

我现在想在main.rs中,调用这个eat_at_restaurant1函数,此时我们什么都不干,直接回到main.rs去尝试调用。

请添加图片描述

可以发现,是无法导入这个main2模块的,或者说main.rs无法看到main2这个模块,那我们应该怎么办?

这个时候lib.rs的作用就来了,我们在lib.rs声明有main2.rs这个模块,还可以声明main2.rs是公开的(这样哪怕是不同级别的模块也是可见的)

我们看看lib.rs文件的内容
在这里插入图片描述

我们再回到main.rs中,看看能不能使用main2.rs中的函数

在这里插入图片描述

这样我们就可以使用main2.rs新创建的函数了

2、案例2

按照案例1来看,难道我每次新创建一个文件都要去lib.rs去mod一下吗,万一我创建了很多,或者是我在一个目录下创建了很多新文件每个文件下有很多新函数,难道我要一个个去mod吗?这太笨了吧?

假设是一个目录下,有很多新建的文件,我们可以在这个目录下,创建一个mod.rs文件,然后在mod.rs下,去声明,你需要公开该目录下的哪些模块,

举个例子,假设我有一个新目录front_of_house,目录下有两个新文件hostring.rs和serving.rs
在这里插入图片描述

!!!!!!!!!注意
两个新文件hostring.rs和serving.rs 我都想能被别的文件使用,那么我们需要这么做

(1)修改目录下mod.rs文件

请添加图片描述

(2)修改lib.rs文件

首先导入目录这个mod,mod名称和目录名称一样,那么这里就是front_of_house。
在这里插入图片描述

这样就相当于我们引入了目录front_of_house,在目录下front_of_house,我们通过mod.rs去声明了我们要公开目录下的什么模块。这样完成的引入声明就完成了

我们在main.rs试试效果

请添加图片描述
大功告成

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/661531.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Intelij Idea Push失败,出现git Authentication failed(验证失败)

目录 1、出现问题的原因 2、解决之法 1、出现问题的原因 能出现这种问题,最主要的原因是链接对上了,但用户验证失败了,即登录失败。 因为服务器转移或者换了git项目链接,导致你忘记了用户名密码,随意输入之后&…

单片机排队叫号系统Proteus仿真程序 有取号键和叫号键以及重复叫号键 有注释

目录 1、前言 ​ 2、程序 资料下载地址:单片机排队叫号系统Proteus仿真程序 有取号键和叫号键以及重复叫号键 有注释 1、前言 系统组成:STC89C52RCLcd1602蜂鸣器按键 具体介绍: Lcd1602排队叫号系统,有取号显示窗和叫号显示窗…

2024最好用的ai画图工具是什么?

我就一句话,AI画图除了Midjourney和Stable DIffusion,其他都是弟弟。尤其是SD!开源!免费!不用 ! 我愿称之为AI届的赛博菩萨! 而且人都开源了,好不好用我还能不知道嘛? 目…

基于Springboot的在线博客网站

基于SpringbootVue的在线博客网站的设计与实现 开发语言:Java数据库:MySQL技术:SpringbootMybatis工具:IDEA、Maven、Navicat 系统展示 用户登录 首页 博客标签 博客分类 博客列表 图库相册 后台登录 后台首页 用户管理 博客标…

深入解析C#特殊字符:概念、分类与使用方法

文章目录 前言一、特殊字符的定义二、特殊字符的分类与作用1.转义字符2. 格式字符3. 逻辑运算符4. 运算符5. 字符串6. 注释 三、$:字符串内插(String Interpolation)四、:逐字字符串(Verbatim Strings)五、…

【电子通识】写出优秀文档的8大秘籍

在日常工作中如开会(写会议纪要)、整理方案(写可行性分析报告、方案评审报告)、问题复盘(写问题分析报告)等工作场景,少不了文档做辅助。因此,如何写出优秀的文档、将信息清晰准确地…

牛客网刷题 | BC70 计算单位阶跃函数

目前主要分为三个专栏,后续还会添加: 专栏如下: C语言刷题解析 C语言系列文章 我的成长经历 感谢阅读! 初来乍到,如有错误请指出,感谢! 描述 KiKi最近学习了信号…

【吊打面试官系列】Java高并发篇 - 为什么 wait 和 notify 方法要在同步块中调用?

大家好,我是锋哥。今天分享关于 【为什么 wait 和 notify 方法要在同步块中调用?】面试题,希望对大家有帮助; 为什么 wait 和 notify 方法要在同步块中调用? Java API 强制要求这样做,如果你不这么做&#…

【个人博客搭建】(15)Redis缓存使用

1、下载nuget包:StackExchange.Redis; 并引用 using StackExchange.Redis; 2、配置信息 /* Redis缓存配置 */"Redis": {"Enabled": true,"ConnectionString": "127.0.0.1:6379,password123456"} 3、配置模型 public cla…

小剧场短剧影视小程序源码_后端PHP

项目运行截图 源码贡献 https://githubs.xyz/boot?app42 部署说明 linux/win任选 PHP版本:7.3/7.2(测试时我用的7.2要安装sg扩展 ) 批量替换域名http://video.owoii.com更换为你的 批量替换域名http://120.79.77.163:1更换为你的 这两个…

PotatoPie 4.0 实验教程(34) —— FPGA实现摄像头图像二值化腐蚀效果

链接直达 https://item.taobao.com/item.htm?ftt&id776516984361 图像二值化腐蚀处理有什么作用? 图像二值化腐蚀处理在图像处理中起到了以下作用: 物体分割与提取:在图像二值化之后,通过腐蚀操作可以消除噪声、连接相邻的…

uniapp 对接 Apple 登录

由于苹果要求App使用第三方登录必须要求接入Apple登录 不然审核不过 所以: 一、勾选苹果登录 二、 设置AppId Sign In Apple 设置完成重新生成描述文件 !!!!证书没关系 示例代码: async appleLogin…