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

2024-02-28 23:52
文章标签 rs rust 调用 目录 同级 下级

本文主要是介绍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(),);
}

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


这篇关于Rust调用同级目录中的rs文件和调用下级目录中的rs文件的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/757010

相关文章

Spring LDAP目录服务的使用示例

《SpringLDAP目录服务的使用示例》本文主要介绍了SpringLDAP目录服务的使用示例... 目录引言一、Spring LDAP基础二、LdapTemplate详解三、LDAP对象映射四、基本LDAP操作4.1 查询操作4.2 添加操作4.3 修改操作4.4 删除操作五、认证与授权六、高级特性与最佳

Java调用C++动态库超详细步骤讲解(附源码)

《Java调用C++动态库超详细步骤讲解(附源码)》C语言因其高效和接近硬件的特性,时常会被用在性能要求较高或者需要直接操作硬件的场合,:本文主要介绍Java调用C++动态库的相关资料,文中通过代... 目录一、直接调用C++库第一步:动态库生成(vs2017+qt5.12.10)第二步:Java调用C++

在C#中调用Python代码的两种实现方式

《在C#中调用Python代码的两种实现方式》:本文主要介绍在C#中调用Python代码的两种实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录C#调用python代码的方式1. 使用 Python.NET2. 使用外部进程调用 Python 脚本总结C#调

SpringCloud之LoadBalancer负载均衡服务调用过程

《SpringCloud之LoadBalancer负载均衡服务调用过程》:本文主要介绍SpringCloud之LoadBalancer负载均衡服务调用过程,具有很好的参考价值,希望对大家有所帮助,... 目录前言一、LoadBalancer是什么?二、使用步骤1、启动consul2、客户端加入依赖3、以服务

Linux修改pip临时目录方法的详解

《Linux修改pip临时目录方法的详解》在Linux系统中,pip在安装Python包时会使用临时目录(TMPDIR),但默认的临时目录可能会受到存储空间不足或权限问题的影响,所以本文将详细介绍如何... 目录引言一、为什么要修改 pip 的临时目录?1. 解决存储空间不足的问题2. 解决权限问题3. 提

Vue 调用摄像头扫描条码功能实现代码

《Vue调用摄像头扫描条码功能实现代码》本文介绍了如何使用Vue.js和jsQR库来实现调用摄像头并扫描条码的功能,通过安装依赖、获取摄像头视频流、解析条码等步骤,实现了从开始扫描到停止扫描的完整流... 目录实现步骤:代码实现1. 安装依赖2. vue 页面代码功能说明注意事项以下是一个基于 Vue.js

讯飞webapi语音识别接口调用示例代码(python)

《讯飞webapi语音识别接口调用示例代码(python)》:本文主要介绍如何使用Python3调用讯飞WebAPI语音识别接口,重点解决了在处理语音识别结果时判断是否为最后一帧的问题,通过运行代... 目录前言一、环境二、引入库三、代码实例四、运行结果五、总结前言基于python3 讯飞webAPI语音

C#集成DeepSeek模型实现AI私有化的流程步骤(本地部署与API调用教程)

《C#集成DeepSeek模型实现AI私有化的流程步骤(本地部署与API调用教程)》本文主要介绍了C#集成DeepSeek模型实现AI私有化的方法,包括搭建基础环境,如安装Ollama和下载DeepS... 目录前言搭建基础环境1、安装 Ollama2、下载 DeepSeek R1 模型客户端 ChatBo

Rust中的注释使用解读

《Rust中的注释使用解读》本文介绍了Rust中的行注释、块注释和文档注释的使用方法,通过示例展示了如何在实际代码中应用这些注释,以提高代码的可读性和可维护性... 目录Rust 中的注释使用指南1. 行注释示例:行注释2. 块注释示例:块注释3. 文档注释示例:文档注释4. 综合示例总结Rust 中的注释

Rust格式化输出方式总结

《Rust格式化输出方式总结》Rust提供了强大的格式化输出功能,通过std::fmt模块和相关的宏来实现,主要的输出宏包括println!和format!,它们支持多种格式化占位符,如{}、{:?}... 目录Rust格式化输出方式基本的格式化输出格式化占位符Format 特性总结Rust格式化输出方式