当前位置: 首页 > 工具软件 > Crate > 使用案例 >

Rust语言——Package、Crate、Module

章松
2023-12-01
  • Package(包):Cargo的特性,让你构建、测试、共享crate
  • Crate(单元包):一个模块树,可以产生一个library或可执行文件
  • Module(模块)、use:让你控制代码的组织

我们之前说的rand就是一个crate

一个Package可以有多个binary crate,但只能有0/1个library crate。

Module:

在一个crate内,将代码进行分组

控制项目的私有性:public、private

建立module:

-mod 关键字

-可嵌套

-可包含其他项(struct、enum、常量、函数等)的定义

mod front_of_house{//module
    mod hosting{//module下的子module
        fn add(){}
        fn seat(){}
    }
    mod serving{
        fn order(){}
        fn serve(){}
        fn payment(){}
    }
}
  • 路径

mod front_of_house{//module
    mod hosting{//module下的子module
        fn add(){}
    }
}
pub fn eat_at_rest(){//前面用pub修饰,该函数是公共函数,可以共享
    crate::front_of_house::hosting::add();//绝对路径调用函数
    front_of_house::hosting::add();//因为eat_at_rest()函数和front_of_house模块在同一级所以可以使用相对路径
}

 一般使用绝对路径保证两部分同时移动。

  • 私有边界

Rust中所有的条目(函数、方法、模块、常量等)默认是私有的 ,使用pub关键字可以使条目变为公共的。

-super关键字:访问父级模块路径中的内容

struct结构体前加pub,使得该结构体变成公共的,但是结构体中的变量并不是公共的,若想使其变量也是公共属性,需要在变量前也加上pub

在enum枚举前加pub修饰,不仅该枚举类型是公共属性,而且其中的变体也都是公共的

  • use关键字

 用来导入使用条目的路径

必须是公共(pub)的才能被导入

可以配合as使用,给引入的条目取一个别名,类似python中import...as...

use std::cmp::Ordering as abc;

pub use:可以使所导入的条目公共化,被外部所使用

使用外部包:

1.Cargo.toml添加依赖的包,比如:rand

2.use将特定条目引入作用域

 类似资料: