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

相关文章

如何在页面调用utility bar并传递参数至lwc组件

1.在app的utility item中添加lwc组件: 2.调用utility bar api的方式有两种: 方法一,通过lwc调用: import {LightningElement,api ,wire } from 'lwc';import { publish, MessageContext } from 'lightning/messageService';import Ca

android应用中res目录说明

Android应用的res目录是一个特殊的项目,该项目里存放了Android应用所用的全部资源,包括图片、字符串、颜色、尺寸、样式等,类似于web开发中的public目录,js、css、image、style。。。。 Android按照约定,将不同的资源放在不同的文件夹中,这样可以方便的让AAPT(即Android Asset Packaging Tool , 在SDK的build-tools目

【Rust练习】12.枚举

练习题来自:https://practice-zh.course.rs/compound-types/enum.html 1 // 修复错误enum Number {Zero,One,Two,}enum Number1 {Zero = 0,One,Two,}// C语言风格的枚举定义enum Number2 {Zero = 0.0,One = 1.0,Two = 2.0,}fn m

【LabVIEW学习篇 - 21】:DLL与API的调用

文章目录 DLL与API调用DLLAPIDLL的调用 DLL与API调用 LabVIEW虽然已经足够强大,但不同的语言在不同领域都有着自己的优势,为了强强联合,LabVIEW提供了强大的外部程序接口能力,包括DLL、CIN(C语言接口)、ActiveX、.NET、MATLAB等等。通过DLL可以使用户很方便地调用C、C++、C#、VB等编程语言写的程序以及windows自带的大

linux中使用rust语言在不同进程之间通信

第一种:使用mmap映射相同文件 fn main() {let pid = std::process::id();println!(

CentOS下mysql数据库data目录迁移

https://my.oschina.net/u/873762/blog/180388        公司新上线一个资讯网站,独立主机,raid5,lamp架构。由于资讯网是面向小行业,初步估计一两年内访问量压力不大,故,在做服务器系统搭建的时候,只是简单分出一个独立的data区作为数据库和网站程序的专区,其他按照linux的默认分区。apache,mysql,php均使用yum安装(也尝试

string字符会调用new分配堆内存吗

gcc的string默认大小是32个字节,字符串小于等于15直接保存在栈上,超过之后才会使用new分配。

Detectorn2预训练模型复现:数据准备、训练命令、日志分析与输出目录

Detectorn2预训练模型复现:数据准备、训练命令、日志分析与输出目录 在深度学习项目中,目标检测是一项重要的任务。本文将详细介绍如何使用Detectron2进行目标检测模型的复现训练,涵盖训练数据准备、训练命令、训练日志分析、训练指标以及训练输出目录的各个文件及其作用。特别地,我们将演示在训练过程中出现中断后,如何使用 resume 功能继续训练,并将我们复现的模型与Model Zoo中的

京东物流查询|开发者调用API接口实现

快递聚合查询的优势 1、高效整合多种快递信息。2、实时动态更新。3、自动化管理流程。 聚合国内外1500家快递公司的物流信息查询服务,使用API接口查询京东物流的便捷步骤,首先选择专业的数据平台的快递API接口:物流快递查询API接口-单号查询API - 探数数据 以下示例是参考的示例代码: import requestsurl = "http://api.tanshuapi.com/a

第二十四章 rust中的运算符重载

注意 本系列文章已升级、转移至我的自建站点中,本章原文为:rust中的运算符重载 目录 注意一、前言二、基本使用三、常用运算符四、通用约束 一、前言 C/C++中有运算符重载这一概念,它的目的是让即使含不相干的内容也能通过我们自定义的方法进行运算符操作运算。 比如字符串本身是不能相加的,但由于C++中的String重载了运算符+,所以我们就可以将两个字符串进行相加、但实际