美文网首页
rust多文件/文件夹及模块管理

rust多文件/文件夹及模块管理

作者: 陈半仙儿 | 来源:发表于2022-01-03 20:54 被阅读0次

结论

两种方式:1)include宏,即 include!("file_path");2)mod 方式。

使用场景或者使用最佳实践如下,
一、大部分时候是用 mod 方式。每个文件夹下有一个 mod.rs 文件来控制 struct/func/等 的导出,用来给内部、外部模块使用。
二、include宏等价于复制粘贴,和C/C++的include一样,在宏展开阶段会将整个文件 copy 过来。include宏也有两种场景:1)例如结构体方法的实现,是在多个文件中实现的。另外有时候该多个结构体方法的实现文件组织在一个或几个文件夹中,但却不想将该文件夹声明为模块(mod.rs)。2)文件或者文件夹名字中有中文,使用 mod.rs 方式会报错,此时要么改名为无中文,要么使用include宏。

详细

以力扣刷题场景为例(我学习新语言经常喜欢用力扣刷题来熟悉),我的习惯如下(Java项目为例),


Java刷力扣文件组织方式.png

如图,在src/main/java下,有汇总目录,例如1-100题、101-200题等。每个汇总目录下,有单个题目的目录,用来存放某道题的题目描述和解法,有些题目有多个解法,就会有多个Solution类,如图中Solution和Solution2。这样安排的目的是:1)方便快速检索;2)方便单个题目的组织管理。

这次用rust也希望按照这种管理方式。但是rust的mod管理方式不是基于文件系统的,也就是说rust文件有两个视角,一个是文件系统视角,另一个是rust编译器视角(即mod视角)。
mod具体可参阅rust官方的文档了解,此处不赘述。

mod 方式

该方式下文也会称 mod.rs,两个表述等价。
这种方式下,每个子文件夹下都需要一个 mod.rs 文件,如下图,


Mod方式.png

可以看到,每个文件夹下面有一个mod.rs文件,在mod.rs文件中控制该文件夹下什么东西导出。另外可以看出一些规律,

  • p001_100文件夹下的mod.rs,mod文件中 pub mod 后面是其子文件夹的名字。
  • p001两数之和、p002两数相加文件夹下的mod.rs,mod文件中 pub mod 后面是其子文件的名字。

以p002两数相加文件夹为例,可以看下如何导入导出,


例子.png

include宏方式

该方式下文也会简称include方式。

include上面也提到了有两种方式。
第一种方式。像上面举例的mod方式,文件夹名字是有中文的, rust是会报错的,例如,error[E0754]: trying to load file for module `p001两数之和` with non-ascii identifier name

路径中有中文.png

那么此时可以用include方式,见上图,第一个框的注释掉并且打开include宏的注释即可正常运行。

第二种方式。结构体方法的实现文件组织在多个文件中,或者组织在一个/多个文件夹中,但却不想将该文件夹声明为模块(文件夹声明为模块需要添加mod.rs文件,文件夹多了之后会显得乱),此时就可以使用include。

相关文章

  • rust多文件/文件夹及模块管理

    结论 两种方式:1)include宏,即 include!("file_path");2)mod 方式。 使用场景...

  • odoo V10中文参考手册(指导规范)

    指导规范 模块构造 文件夹 模块的文件夹列表及对应作用: data/ 演示和实际数据的xml models/ 模型...

  • nodejs学习笔记

    参考 模块化 内置模块文件管理(fs)fs.readdirSync() //同步读取文件夹fs.readir() ...

  • 前端开发规范

    通用规范 命名 目录及文件命名 普通目录及文件采用全小写 模块文件夹或者组件文件(如在components下的文件...

  • 零基础小白必看:python基本操作-文件、目录及路径

    使用python的os模块,简单方便完成对文件夹、文件及路径的管理与访问操作。 1 前言 在最近开发中,经常需要对...

  • iOS pod 本地库搭建流程

    打开存在的项目,如图 在项目文件夹里创建文件夹 LocalLib (名字随意)创建当前功能模块的文件夹 (可以多模...

  • Python 入门 之 包

    1、包 (1)什么是包? 文件夹下具有_ init.py _的文件夹就是一个包 (2)包的作用: 管理模块(文件化...

  • 2018-10-09 Python23 模块

    导入的模块,一般先从当前文件夹搜索,如果当前文件夹没有再去系统文件夹搜索。 ?:random 模块 已安装模块 -...

  • 3 模块整合

    一、vuex状态管理 首先下载vuex模块 1、在store文件夹下新建5个子文件每个文件夹的名字和内容如下所示 ...

  • 目录结构及说明

    H5项目目录结构及说明 common/ -->公共模块文件夹 controllers/ -...

网友评论

      本文标题:rust多文件/文件夹及模块管理

      本文链接:https://www.haomeiwen.com/subject/iphfcrtx.html