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(),
    );
}

运行结果如下图所示:


相关推荐
范特西林4 小时前
一次 to_bits() 引发的 Rust 与 C++ 底层思考
rust
冬奇Lab1 天前
一天一个开源项目(第42篇):OpenFang - 用 Rust 构建的 Agent 操作系统,16 层安全与 7 个自主 Hands
人工智能·rust·开源
量子位1 天前
Transformer论文作者重造龙虾,Rust搓出钢铁版,告别OpenClaw裸奔漏洞
rust·openai·ai编程
哈里谢顿2 天前
Rust 语言入门博客
rust
DongLi013 天前
rustlings 学习笔记 -- exercises/06_move_semantics
rust
ssshooter3 天前
Tauri 踩坑 appLink 修改后闪退
前端·ios·rust
布列瑟农的星空3 天前
前端都能看懂的rust入门教程(二)——函数和闭包
前端·后端·rust
蚂蚁背大象4 天前
Rust 所有权系统是为了解决什么问题
后端·rust
布列瑟农的星空4 天前
前端都能看懂的rust入门教程(五)—— 所有权
rust
Java水解5 天前
Rust嵌入式开发实战——从ARM裸机编程到RTOS应用
后端·rust