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


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

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

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

    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(),
        );
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19

    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
        }
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37

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

    二、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
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36

    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边长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
        }
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37

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

    pub mod ellipse;
    pub mod rectangle;
    
    • 1
    • 2

    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(),
        );
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34

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


  • 相关阅读:
    Python-公共操作与推导式
    Hive 中级练习题(40题 待更新)
    egg.js学习记录
    《计算机病毒技术及其防御》 第一章 课后练习详解
    数据结构——单链表
    代码随想录算法训练营第五九天 | 下一个更大元素II、接雨水
    HTC手机如何进行官方解锁Unlock
    第二十篇 axios使用
    面试总结(mysql定精度/oom排查/spring三级缓存/stream流)
    springboot 多线程实现
  • 原文地址:https://blog.csdn.net/u013541325/article/details/136316649