rust相比于C++,一个优势在于有一个现代化的包管理系统,我们不用搞各种命令空间和依赖的问题。这里主要记录了一般文件打包的方式。

rust中声明包的关键字是mod,如果是公共的,则需要声明为pub mod

rust中,每个文件都是一个包,文件名就是包名。如果是和main.rs同级的文件,可以直接使用文件名作为包名。如果有多级目录,那么每个目录下,都要有一个mod.rs作为包的入口,这点类似于python的__init__.py文件;区别在于,rust的mod.rs文件中需要显式地说明当前目录下的包名,以及是否是pub类型的。

下面给出一个代码结构实例:

从里往外分析,每个文件的内容如下:
ak.rs

pub mod ak_47 {pub fn fire() {println!("AK-46 fire");}
}

mod.rs,这是long_gun的入口文件:

pub mod ak;   // 声明当前的包中有ak

my_gun.rs

pub fn my_gun1_fire() {println!("my_gun fire");
}

mod.rs,和my_gun.rs同级别的:

pub mod my_gun;
pub mod long_gun;

car.rs

pub mod ferrari {pub fn run() {println!("ferrari run");}
}pub mod bmw {pub fn run() {println!("bmw run");}
}

main.rs,这是程序的入口,注意不同的引用方式:

mod car;
use car::bmw;
mod gun;
use car::ferrari as f;fn main() {car::ferrari::run();f::run();bmw::run();gun::my_gun::my_gun1_fire();gun::long_gun::ak::ak_47::fire();
}

最后的输出结果是:

ferrari run
ferrari run
bmw run
my_gun fire
AK-46 fire

rust笔记7 rust中的包管理相关推荐

  1. 软件版本命名sig_LIUNX中程序包管理

    LIUNX中程序包管理 此内容仅为笔记,这一两天给会重新整理补充上操作示例. 一.基础 1.程序描述: 第一种描述: 程序+数据 第二种描述: 算法+数据结构 2.程序的组成部分: ​ 1.二进制程序 ...

  2. Windows中使用包管理器(类似于apt/yum的) - Chocolatey

    Windows中使用包管理器 - Chocolatey简介 李俊才 的 CSDN 博客 邮箱 :291148484@163.com CSDN 主页:https://blog.csdn.net/qq_2 ...

  3. Linux 中的包管理器是什么?它是如何工作的?

    文章目录 1.Linux 中的包管理器是什么? 2.什么是包? 3.包管理器如何工作? 4.不同类型的包管理器 1.Linux 中的包管理器是什么? Linux 发行版之间的主要区别之一是包管理系统( ...

  4. golang中的包管理工具——govendor和godep简单学习

    为什么用vendor目录 依赖问题 我们知道,一个工程稍大一点,通常会依赖各种各样的包.而Go使用统一的GOPATH管理依赖包,且每个包仅保留一个版本.而不同的依赖包由各自的版本工具独立管理,所以当所 ...

  5. Python中pip包管理工具的源配置文件pip.ini

    当前环境为windows10时,安装了Python以后,在C:\Users\admin目录(当前用户)下创建pip文件夹,并在此文件夹下新建pip.ini文件: 在pip.ini文件中编辑下述内容: ...

  6. python中有很多包管理工具那中不是_Python中的包管理工具PIP,pip

    1.1.4节 -- Python的包管理工具pip pip包 pip list(退出python环境后再输入)  列出匹配管理的包有哪些 pip install 包名        安装一个包(默认安 ...

  7. linux中程序包管理方式出现的原由(转载)

    1.软件的安装卸载是很平常的事情,但是在linux上面却也这么的不简单.Linux的其中一个哲学思想就是 一个程序只做一件事,并且做好. 组合小程序来完成复杂任务.这样做有很多好处.但世界上的东西总是 ...

  8. node.js中npm包管理工具

    现在安装node.js,默认就会帮我们装上了npm包管理工具,npm主要用来下载,安装,管理第三方模块. 创建一个包描述文件: npm init [-y] 查看包的信息 npm info <pa ...

  9. 【学习笔记】springBoot中获取sping管理的bean

    文章目录 一.使用场景 二.springBoot中获取sping管理的bean 2.1 生成工具类SpringContextUtil 2.2 使用工具类SpringContextUtil 2.3 注意 ...

最新文章

  1. 分布式事务选型的取舍
  2. python一个try块后接一个或多个finally块_Python * with *语句是否完全等同于try-(例外)-finally块?...
  3. vscode中内置集成终端显示为git(bash.exe)
  4. python线程同步锁_Python实现的多线程同步与互斥锁功能示例
  5. 参考文献顺序不对_Endnote插入参考文献的保姆级教程
  6. numpy matlab 索引不同,与Numpy相似的MATLAB数组索引
  7. JQuery让input从disabled变成enabled
  8. Python List:合并多个list,listd的合并
  9. android profiler 简书,(四)Android 性能优化 Energy Profiler
  10. python读取压缩文件的指定后缀的文件_python打包压缩、读取指定目录下的指定类型文件...
  11. [Unity3D]脚本中Start()和Awake()的区别
  12. 通过QQ 2012 客户端协议获取clientkey的0x30数据包分析
  13. 《数据库应用》课程设计人事管理系统(java源代码)
  14. 分布式事务-LCN解决分布式事务
  15. 微信小程序踩坑指南--回填再造
  16. 【6.28校内test】T2 【音乐会】二重变革
  17. Nachos操作系统synch(lab3)
  18. Python matplotlib 饼图
  19. VTA(Versatile Tensor Accelerator)阅读笔记
  20. 解决:RuntimeError: CUDA error: device-side assert triggered

热门文章

  1. matlab makesurf,matlab制作GIF之hello world
  2. sklearn中SVM的可视化
  3. Resnet-18-训练实验-warm up操作
  4. 中文信息处理(二)—— 分词
  5. ## CSP 201809-2 买菜(C语言)(100分)
  6. 无人驾驶——矩形框检测的学习笔记
  7. MATLAB中常见的取整函数
  8. Python3.x的print()输出问题
  9. 反向传播是什么?通俗易懂的解释!!!
  10. EC600 QuecPython开发环境搭建、固件下载,最方便的OpenCPU物联网4G通信解决方案