zoukankan      html  css  js  c++  java
  • Rust模块化

    Rust模块化

    模块化有助于代码的管理和层次逻辑的清晰

    Rust模块化有多种方式:

    1.嵌套模块

    嵌套模块就是直接在要使用模块的文件中声明模块

    mod food{//声明模块
       pub struct Cake;
       pub struct Smoothoe;
       pub struct Pizza;
    }
    use food::Cake;//使用模块中的内容
    fn main() {
        let eateable=Cake;
    }
    
    

    2.文件模块

    一个.rs文件就是一个和文件同名的模块,在使用的地方要声明模块

    file_module/
    ├── Cargo.toml
    └── src
    ├── food.rs
    └── main.rs

    food.rs:

       pub struct Cake;
       pub struct Smoothoe;
       pub struct Pizza;
    

    main.rs

    mod food;//声明模块
    use food::Cake;//使用模块内容
    fn main() {
        let eatable=Cake;
    }
    

    3.目录模块

    2015写法:

    dir_module_2015
    ├── Cargo.toml
    └── src
    ├── food
    │ ├── cake.rs
    │ ├── mod.rs
    │ ├── pizza.rs
    │ └── smoothoe.rs
    └── main.rs

    cake.rs:

    pub struct Cake;
    

    pizza.rs

    pub struct Pizza;
    

    smoothoe.rs

    pub struct Smoothoe;
    

    mod.rs

    pub mod cake;
    pub mod pizza;
    pub mod smoothoe;
    use self::cake::Cake;
    impl Cake {
        pub fn judge(){
            println!("cake is sweet");
        }
    }
    

    main.rs

    mod food;
    use food::cake::Cake;
    fn main() {
        Cake::judge();
    }
    
    2018写法:

    dir_module_2018
    ├── Cargo.toml
    └── src
    ├── food
    │ ├── cake.rs
    │ ├── pizza.rs
    │ └── smoothoe.rs
    ├── food.rs
    └── main.rs

    cake.rs:

    pub struct Cake;
    

    pizza.rs

    pub struct Pizza;
    

    smoothoe.rs

    pub struct Smoothoe;
    

    food.rs

    pub mod cake;
    pub mod pizza;
    pub mod smoothoe;
    use self::cake::Cake;
    impl Cake {
        pub fn judge(){
            println!("cake is sweet");
        }
    }
    

    main.rs

    mod food;
    use food::cake::Cake;
    fn main() {
        Cake::judge();
    }
    

    目前Rust兼容mod.rs写法和文件夹同目录下同名文件写法

    导入规则

    绝对导入

    create:绝对导入前缀,指向当前目的root模块(main.rs或lib.rs)。

    相对导入

    self:指向于当前模块的元素,用于任何想要引入自身模块所包含的内容时。(例如父模块重新导出子模块 pub use self::cake::Cake; )

    super:指向父模块,用于从父模块导入元素。(如果模块bar希望访问副模块foo中的元素Foo,那么可以用super::foo::Foo)

  • 相关阅读:
    当tp5项目上传到服务器之后遇见的各种bug(不定期更新)
    解决LAMP下 服务器IP无法访问
    thinkphp5多图上传+同时删除本地文件
    from提交表单后 数据提交到后台 但不跳转页面 非ajax 用iframe
    window7 安装sass和compass
    开源操作系统课程设计
    Hadoop伪分布式搭建实验总结
    排序集合
    快排
    邻接矩阵
  • 原文地址:https://www.cnblogs.com/yanshaoshuai/p/14407130.html
Copyright © 2011-2022 走看看