Rust语言——Package、Crate、Module
-
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将特定条目引入作用域