【Rust】快速教程——模块mod与跨文件

前言

道尊:没有办法,你的法力已经消失,我的法力所剩无几,除非咱们重新修行,在这个世界里取得更多法力之后,或许有办法下降。——《拔魔》


\;\\\;\\\;

目录

    • 前言
    • 跨文件mod
    • 多文件mod

跨文件mod

//my_mod.rs
pub mod mod_1{//默认私有fn say1(){println!("[say1]private function");}pub fn say2(){println!("[say2]public function");//调用子模块的函数mod_2::dog();}pub fn say3(){println!("[say3]public function");say2();//调用子模块的函数mod_2::run();}//模块的嵌套pub mod mod_2{fn say1(){println!("[mod_2][say1]private function");//不知道会不会重写}pub fn say2(){println!("[mod_2][say2]public function");//不知道会不会重写} //此函数只在当前mod中可见pub(self) fn interior_f(){println!("[mod_2][interior_f]only used in this mod");}//只在my_mod::mod_1中可见pub(in crate::my_mod::mod_1) fn dog(){println!("[mod_2][dog]do it!");interior_f();}//此函数只在上一层mod中可见pub(super) fn run(){println!("[mod_2][run]run!");}//再嵌套一层看看效果pub mod mod_3{pub fn say1(){println!("[mod_3][say1]marvelous!");}pub fn say2(){println!("[mod_3]say2");say1(); //本mod_3的say1//say2(); //本mod_3的say2,递归报错//interior_f(); //只在mod_2中,不能拿到下面来//dog(); //不能拿到下面来//run(); //只在mod_1中,不能拿到下面来}}}
}
//function.rs
mod my_mod;
pub use my_mod::*;fn main() {//mod_1::say1();   //私有函数调用不了mod_1::say2();mod_1::say3();//mod_1::mod_2::say1();  //私有函数调用不了mod_1::mod_2::say2();//mod_1::mod_2::interior_f();  //私有函数调用不了//mod_1::mod_2::some(); //私有函数调用不了//mod_1::mod_2::run(); //私有函数调用不了mod_1::mod_2::mod_3::say1();mod_1::mod_2::mod_3::say2();
}

在这里插入图片描述

\;\\\;\\\;

多文件mod

文件夹的名字就是mod的名字,里面必须有一个mod.rs,和python里的__init__.py一样。文件夹外需要一个mod.rs,来声明这个文件夹是模块。

在这里插入图片描述

//student.rs
pub fn run_2(){println!("i am a student");
}
//teacher.rs
pub fn run_3(){println!("i am a teacher");
}
//staff.rs
pub fn run_1(){println!("i am a staff");
}

interface文件夹中的mod

//mod.rs
pub mod staff;
pub mod student;
pub mod teacher;

和interface文件夹并行的mod

//mod.rs
pub mod interface;

\;\\\;
调用模块

//run.rs
mod interface;
use interface::staff;
use interface::student;
use interface::teacher;fn main(){staff::run_1();student::run_2();teacher::run_3();
}

在这里插入图片描述

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

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

相关文章

ChatGPT简介及基本概念

点击跳转专栏>Unity3D特效百例点击跳转专栏>案例项目实战源码点击跳转专栏>游戏脚本-辅助自动化点击跳转专栏>Android控件全解手册点击跳转专栏>Scratch编程案例点击跳转>软考全系列点击跳转>蓝桥系列点击跳转>ChatGPT和AIGC 👉关于作者 专…

栈与队列练习题

作者前言 🎂 ✨✨✨✨✨✨🍧🍧🍧🍧🍧🍧🍧🎂 ​🎂 作者介绍: 🎂🎂 🎂 🎉🎉&#x1f389…

SpringCloud-Gateway修改Response响应体,并解决大数据量返回不全等问题

官网相关案例: Spring Cloud Gatewayhttps://docs.spring.io/spring-cloud-gateway/docs/current/reference/html/#the-modifyresponsebody-gatewayfilter-factory ModifyRequestBodyGatewayFilterFactory类: https://github.com/spring-cloud/spring-cloud-gate…

高防IP可以抵御哪些恶意攻击

高防IP协议可以隐藏用户的站点,使得攻击者无法发现恶意攻击的目标网络资源,从而提高了源站的安全性。能够有效抵御常见的恶意攻击类型ICMPFlood、UDPFlood、 TCPFlood、SYNFlood、ACKFlood等,帮助游戏、金 融、电子商务、互联网、政企等行业抵…

Unity中Shader矩阵的乘法

文章目录 前言一、矩阵乘以标量二、矩阵和矩阵相乘1、第一个矩阵的列数必须 与 第二个矩阵的行数相等,否则无法相乘!2、相乘的结果矩阵,行数由第一个矩阵的行数决定,列数由第二个矩阵的列数决定! 三、单位矩阵四、矩阵…

设计模式-适配器-笔记

适配器模式Adapter 动机(Motivation) 在软件系统中,由于应用环境的变化,常常需要将“一些现存的对象”放在新的环境中应用,但是新环境要求的接口是在这些现存对象所不满足的。 如何应对这种“迁移的变化”&#xff1…

互联网Java工程师面试题·微服务篇·第一弹

目录 ​编辑 1、您对微服务有何了解? 2、微服务架构有哪些优势? 3、微服务有哪些特点? 4、设计微服务的最佳实践是什么? 5、微服务架构如何运作? 6、微服务架构的优缺点是什么? 7、单片&#xff0c…

LMI相机配置步骤,使用Gocator2550相机

在此之前可以先浏览我编写的相机SDK通用类和LMISDK,进行配套观看 https://blog.csdn.net/m0_51559565/article/details/134404394 //LMI相机SDK https://blog.csdn.net/m0_51559565/article/details/134403745 //相机通用类1.启动LMI加速器 LMI加速器用于将相机…

零代码编程:用ChatGPT批量转换多个视频文件夹到音频并自动移动文件夹

有很多个视频文件夹: 要全部转成音频,然后复制到另一个文件夹。 在ChatGPT中输入如下提示词: 你是一个Python编程专家,要完成一个批量将Mp4视频转为Mp3音频的任务,具体步骤如下: 打开文件夹:…

基于JavaWeb+SpringBoot+Vue电子商城微信小程序系统的设计和实现

基于JavaWebSpringBootVue电子商城微信小程序系统的设计和实现 源码获取入口前言系统设计功能截图Lun文目录订阅经典源码专栏Java项目精品实战案例《500套》 源码获取 源码获取入口 前言 身处互联网时代,互联网无形中影响着人们的吃穿住行,人们享受着不…

uart控制led与beep

仲裁模块代码: // 外设控制模块,根据uart接收到的数据,控制led与beep的标志信号。 module arbit(input wire sys_clk ,input wire sys_rst_n ,input wire pi_flag …

微软Surface/Surface pro笔记本电脑进入bios界面

微软Surface笔记本电脑进入bios界面 方法一推薦這種方法:Surface laptop 进BIOS步骤 开机后,不停按音量键进bios界面。 方法二:Surface Book、Surface Pro进bios步骤 1、关闭Surface,然后等待大约10秒钟以确保其处于关闭状态。…

C++之list

C之list list的构造 #include <iostream> #include<list> using namespace std;//打印函数 void printfList(const list<int>&L) {for(list<int>::const_iterator it L.begin();it ! L.end();it){cout<<*it<<" ";}cout<…

redis运维(十)列表

一 列表 强调&#xff1a; 知道原生redis具备的能力,以便后续API调用 ① 基础概念 备注&#xff1a; 单个list最多2^32-1个元素 列表操作常用命令,涉及&#xff1a;CURD ② lpush 左插入 说明&#xff1a; 如果key不存在就会初始化,否则就是插入元素备注&#xff1a; l…

腾讯云服务器新用户专享优惠券,腾讯云新用户代金券领取入口汇总

什么是腾讯云新用户专享优惠券&#xff1f; 腾讯云新用户专享优惠券是腾讯云为新用户提供的一种特别优惠。你可以在购买腾讯云服务器时使用这些优惠券&#xff0c;以更低的价格获得优质的云服务。 为了回馈广大新用户&#xff0c;腾讯云服务器推出了一系列优惠活动&#xff0…

sql注入 [极客大挑战 2019]LoveSQL 1

打开题目 几次尝试&#xff0c;发现输1 1"&#xff0c;页面都会回显NO,Wrong username password&#xff01;&#xff01;&#xff01; 只有输入1&#xff0c;页面报错&#xff0c;说明是单引号的字符型注入 那我们万能密码试试能不能登录 1 or 11 # 成功登录 得到账号…

Stable Diffusion WebUI使用AnimateDiff插件生成动画

AnimateDiff 可以针对各个模型生成的图片&#xff0c;一键生成对应的动图。 配置要求 GPU显存建议12G以上&#xff0c;在xformers或者sdp优化下显存要求至少6G以上。 要开启sdp优化&#xff0c;在启动参数加上--sdp-no-mem-attention 实际的显存使用量取决于图像大小&#…

Linux安装RabbitMQ详细教程

一、下载安装包 下载erlang-21.3-1.el7.x86_64.rpm、rabbitmq-server-3.8.8-1.el7.noarch.rpm 二、安装过程 1、解压erlang-21.3-1.el7.x86_64.rpm rpm -ivh erlang-21.3-1.el7.x86_64.rpm2、安装erlang yum install -y erlang3、查看erlang版本号 erl -v4、安装socat …

设计模式解码:软件工程架构的航标

引言 软件工程领域的设计模式&#xff0c;就像是建筑师手中的设计蓝图&#xff0c;它们是经验的总结&#xff0c;指导开发者如何在面对层出不穷的编程难题时&#xff0c;构建出既稳固又灵活的软件结构。就像一座经过精心设计的大厦能够经受住风雨的考验一样&#xff0c;一个利用…

云计算和跨境电商:数字化未来的基石

云计算和跨境电商两者结合&#xff0c;共同塑造着当今数字化时代的商业未来。这两个领域的发展&#xff0c;为企业提供了前所未有的机会&#xff0c;使他们能够扩展国际业务、提高效率&#xff0c;以及为全球市场提供更多产品和服务。本文将深入探讨云计算如何成为跨境电商的数…