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

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

Rust新建工程demo02,src文件夹下面新建test.rs文件,这样main.rs文件与它属于同级目录中。

关键点:导入test文件和test文件中的Ellipse模块

rust 复制代码
mod test;//导入test模块(文件)
use test::Ellipse;//使用test模块(文件)中的Ellipse模块

main.rs源文件

rust 复制代码
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源文件

rust 复制代码
#[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源文件

rust 复制代码
#[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源文件

rust 复制代码
#[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边长a
    pub fn get_a(&mut self) -> u32 {
        self.a
    }
    //获取Rectangle边长b
    pub fn get_b(&mut self) -> u32 {
        self.b
    }

    //计算长方形的面积
    pub fn area(&mut self) -> u32 {
        self.a * self.b
    }
}

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

rust 复制代码
pub mod ellipse;
pub mod rectangle;

main.rs源文件

rust 复制代码
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(),
    );
}

运行结果如下图所示:


相关推荐
t***5449 小时前
如何验证Clang是否在Dev-C++中正常工作
开发语言·c++
charlie1145141919 小时前
嵌入式C++开发第17篇:C++23特性收尾 —— 属性、链接与零开销抽象的最终证明
开发语言·c++·stm32·学习·c++23
Mr -老鬼9 小时前
Salvo Web框架专属AI智能体 - 让Rust开发效率翻倍
人工智能·后端·rust·智能体·salvo
lsx20240610 小时前
PHP MySQL Order By
开发语言
笑春风oO10 小时前
使用国内镜像源加速Qt“更新/安装”的方法【Ubuntu篇】
开发语言·qt
asdzx6710 小时前
Python: 从 PPT 提取图片和文本
开发语言·python·powerpoint
枫叶丹410 小时前
【HarmonyOS 6.0】AVCodec Kit 同步模式视频编解码深度解析:从API演进到高性能实战
开发语言·华为·harmonyos·视频编解码
jjjava2.010 小时前
计算机体系与进程管理全解析
java·开发语言
AI人工智能+电脑小能手10 小时前
【大白话说Java面试题】【Java基础篇】第5题:HashMap的底层原理是什么
java·开发语言·数据结构·后端·面试·hash-index·hash
谢谢 啊sir10 小时前
L1-120 智慧文本编辑器 - java
java·开发语言