Rust 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试试效果

请添加图片描述
大功告成

相关推荐

  1. 入门SAM

    2024-05-01 17:50:03       40 阅读
  2. Rust async,

    2024-05-01 17:50:03       38 阅读
  3. TypeScript

    2024-05-01 17:50:03       24 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-05-01 17:50:03       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-05-01 17:50:03       106 阅读
  3. 在Django里面运行非项目文件

    2024-05-01 17:50:03       87 阅读
  4. Python语言-面向对象

    2024-05-01 17:50:03       96 阅读

热门阅读

  1. Centos7安装完ifconfig命令出错:bash: command not found

    2024-05-01 17:50:03       31 阅读
  2. k8s pod 镜像拉取策略

    2024-05-01 17:50:03       27 阅读
  3. Python解释器:编程界的“翻译官”

    2024-05-01 17:50:03       30 阅读
  4. ps基础学习笔记-颜色模式

    2024-05-01 17:50:03       29 阅读
  5. 排序试题(一)

    2024-05-01 17:50:03       34 阅读
  6. “IP地址的未来:IPv6的机遇与挑战“

    2024-05-01 17:50:03       34 阅读
  7. CSS背景图像显示方式

    2024-05-01 17:50:03       35 阅读
  8. Element-UI快速入门

    2024-05-01 17:50:03       37 阅读