Rust调用同级目录中的rs文件和调用下级目录中的rs文件

一、Rust调用同级目录中的rs文件

Rust新建工程demo02,src文件夹下面新建test.rs文件,这样main.rs文件与它属于同级目录中。
在这里插入图片描述
关键点:导入test文件和test文件中的Ellipse模块

mod test;//导入test模块(文件)
use test::Ellipse;//使用test模块(文件)中的Ellipse模块

main.rs源文件

mod test;//导入test模块(文件)
use test::Ellipse;//使用test模块(文件)中的Ellipse模块fn main() {let mut ell=Ellipse::new();ell.set(10, 5);println!("{:#?}", ell);println!("椭圆的长半轴={},椭圆的短半轴={},椭圆的面积={}",ell.get_x(),ell.get_y(),ell.area(),);
}

test.rs源文件

#[derive(Debug)]
//定义一个结构体
pub struct Ellipse {max_semi_axis: u32,min_semi_axis: u32,
}impl Ellipse {//创建Ellipse对象pub fn new() -> Ellipse {Ellipse {max_semi_axis: 0,min_semi_axis: 0,}}//设置Ellipse其中元素值pub fn set(&mut self, max_x: u32, min_y: u32){self.max_semi_axis=max_x;self.min_semi_axis=min_y;}//获取Ellipse长半轴值pub fn get_x(&mut self) -> u32 {self.max_semi_axis}//获取Ellipse短半轴值pub fn get_y(&mut self) -> u32 {self.min_semi_axis}//计算椭圆的面积pub fn area(&mut self) -> f64 {3.14 * self.max_semi_axis as f64 * self.min_semi_axis as f64}
}

运行结果如下图所示:
在这里插入图片描述

二、Rust调用下级目录中的rs文件

Rust新建工程demo03,src文件夹下面新建shape目录,再在shape目录下新建ellipse.rs文件、rectangle.rs文件和mod.rs文件。

关键点:因为main.rs文件需要调用shape目录下的ellipse.rs文件、rectangle.rs文件,所以这是需要在shape目录下建立一个 mod.rs (Rust中的一个特殊文件) 用于模块的声明,就相当于声明shape这个目录下有哪些模块。
在这里插入图片描述
ellipse.rs源文件

#[derive(Debug)]
//定义一个椭圆结构体
pub struct Ellipse {max_semi_axis: u32,min_semi_axis: u32,
}impl Ellipse {//创建Ellipse对象pub fn new() -> Ellipse {Ellipse {max_semi_axis: 0,min_semi_axis: 0,}}//设置Ellipse其中元素值pub fn set(&mut self, max_x: u32, min_y: u32){self.max_semi_axis=max_x;self.min_semi_axis=min_y;}//获取Ellipse长半轴值pub fn get_x(&mut self) -> u32 {self.max_semi_axis}//获取Ellipse短半轴值pub fn get_y(&mut self) -> u32 {self.min_semi_axis}//计算椭圆的面积pub fn area(&mut self) -> f64 {3.14 * self.max_semi_axis as f64 * self.min_semi_axis as f64}
}

rectangle.rs源文件

#[derive(Debug)]
//定义一个长方形结构体
pub struct Rectangle {a: u32,b: u32,
}impl Rectangle {//创建Rectangle对象pub fn new() -> Rectangle {Rectangle {a: 0,b: 0,}}//设置Rectangle其中元素值pub fn set(&mut self, a: u32, b: u32){self.a=a;self.b=b;}//获取Rectangle边长apub fn get_a(&mut self) -> u32 {self.a}//获取Rectangle边长bpub fn get_b(&mut self) -> u32 {self.b}//计算长方形的面积pub fn area(&mut self) -> u32 {self.a * self.b}
}

mod.rs源文件(声明shape这个目录下有哪些模块。)

pub mod ellipse;
pub mod rectangle;

main.rs源文件

mod shape;//导入shape文件夹
use shape::ellipse::Ellipse;//使用shape文件夹下的ellipse文件中的Ellipse模块
use shape::rectangle::Rectangle;//使用shape文件夹下的rectangle文件中的Rectangle模块fn main() {let mut ell=Ellipse::new();ell.set(10, 5);println!("{:#?}", ell);println!("椭圆的长半轴={},椭圆的短半轴={},椭圆的面积={}",ell.get_x(),ell.get_y(),ell.area(),);println!("-------------------------------------------------------");let mut rect=Rectangle::new();rect.set(8, 3);println!("{:#?}", rect);println!("长方形的边长a={},长方形的边长b={},长方形的面积={}",rect.get_a(),rect.get_b(),rect.area(),);
}

运行结果如下图所示:
在这里插入图片描述


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

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

相关文章

flutter 加密安全

前言:数据安全 数据的加密解密操作在 日常网络交互中经常会用到,现在密码的安全主要在于 秘钥的安全,如论 DES 3DES AES 还是 RSA, 秘钥的算法(计算秘钥不固定) 和 保存,都决定了你的数据安全;…

在CentOS上使用Docker搭建Halo博客并实现远程访问的详细指南

🌈个人主页:聆风吟 🔥系列专栏:网络奇遇记、数据结构 🔖少年有梦不应止于心动,更要付诸行动。 文章目录 📋前言一. Docker部署Halo1.1 检查Docker版本1.2 在Docker中部署Halo 二. Linux安装Cpol…

C++:list容器(非原生指针迭代器的实现)

本章是STL容器 list 的模拟实现。 之前已经使用 C语言 对带头双向循环链表 进行实现,详见数据结构: 线性表(带头双向循环链表实现), 相较于之前的实现,C 下多了对迭代器以及模板等相关语法特性。下面将着重讲解这些新知识。 文章目录 一. list 的基本框架…

【JavaEE】_前端POST请求使用json向后端传参

目录 1. 关于json 2. 通过Maven仓库,将Jackson下载导入到项目中 3. 使用Jackson 3.1 关于readValue方法 3.2 关于Request.class类对象 3.3 关于request对象的属性类型 3.4 关于writeValueAsString 前端向后端传递参数通常有三种方法: 第一种&…

学生成绩管理系统

用单链表数据结构完成c的学生成绩管理系统,此系统的具体功能如下: 本人小萌新一个,遇到BUG是正常现象。并且类与对象写的不太理想。- 写了一个Database存放所有数据,但这肯定浪费资源,你们看着改改吧。 class DataBase…

【主题广范|见刊快】2024年电力电气与机械,能源工程国际会议(ICPEMEE 2024)

【主题广范|见刊快】2024年电力电气与机械,能源工程国际会议(ICPEMEE 2024) 重要信息 会议官网:http://www.icpemee.com会议地址:合肥截稿日期:2024.03.10召开日期:2024.03.20 (先投…

Linux下性能分析的可视化图表工具

1 sar 和sadf 1.1 简介 sar命令可以记录系统下的常见活动信息,例如CPU使用率、网络统计数据、Block I/O数据、内存使用情况 等。 sar命令的“-o [file_name]”参数可以将系统活动数据记录到file_name文件,然后通过sadf来解析,sadf命令的“-g…

Linux中数据库sqlite3的基本命令的使用

数据库概念介绍 数据库安装 首先将本地的三个sqlite3安装包移动到共享文件夹然后在移动到自己创建的文件夹中如下: 然后对安装包进行解压如下:sudo dpkg -i *.deb检查是否安装成功sqlite数据库命令 系统命令 , 都以’.开头 .exit .quit .…

基于BP神经网络的股票价格预测论文及其Python代码实现

代码:github 基于BP神经网络的股票价格预测 通过BP神经网络对明尼亚波利斯春小麦期货的收盘价进行了预测,准确的预测出收盘价的变动。 神经网络中采用优化器ADAM、学习率变化策略Warmup和余弦退化技术,可以有效的解决训练时间太长的的问题。…

防火墙的内容安全

目录 1. 内容安全 1.1 IAE引擎 DPI---深度包检测技术 DFI---深度流检测技术 结论(优缺点): 1.2 入侵防御(检测)(IPS) IPS的优势: 入侵检测的方法: 入侵检测的流程 签名 查看预定义签名的内容 新建自定义签名 入侵防御的检测…

[源码分析]webrtc音频流从接收到播放的关键流程

如图所示,音频流从接收到播放的核心关键流程和执行线程。 neteq中对音频流的RTP数据包进行了处理和解码操作。同时数据出现了跨线程的投递。 后面有空补上核心对象之间的关系图。 后面将添加对neteq模块的细节分析。

LiveGBS流媒体平台GB/T28181功能-查看国标设备下通道会话列表直播|回放|对讲|播放|录像|级联UDP|TCP|H264|H265会话

LiveGBS流媒体平台GB/T28181功能-查看直播|回放|对讲|播放|录像|级联UDP|TCP|H264|H265会话 1、会话列表2、会话类型3、搭建GB28181视频直播平台 1、会话列表 LiveGBS-> 国标设备-》点击在线状态 点击会话列表 2、会话类型 下拉会话类型可以看到 直播会话、回放会话、下载…