RUST学习-代码组成基本结构

rust的代码组成结构分为package->cratio->module

每个rust的程序都包含入口文件main.rs,模块导入文件lib.rs

rust的包导入use关键字

在rs文件顶端用use关键字可以导入依赖,另外rust的函数、strut、method默认都是私有的,如果在别的模块和文件需要使用要显示的在定义处加pub

pub use的用法:re-export重导出

  • 因为 lib.rs里有pub use front_of_hosting::hosting
  • 所以main.rs里能直接 my_project::hosting,省略掉路径front_of_hosting而直接导出了hosting
  • 也可以写相对路径my_project::front_of_hosting::hosting
  • 也可以re-export函数,即在lib.rs pub use front_of_hosting::serveing::take_order,这里可以直接调用my_project::take_order

lib.rs

1
2
pub use front_of_hosting::hosting;
pub use front_of_hosting::serving::take_order;

main.rs

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
use my_project::eat_at_restaurant;
use my_project::front_of_hosting::hosting;
use my_project::hosting as pub_hosting;
use my_project::take_order;

fn main() {
/**\
pub use的用法:re-export重导出
- 因为 lib.rs里有pub use front_of_hosting::hosting
- 所以main.rs里能直接 my_project::hosting,省略掉路径front_of_hosting而直接导出了hosting
- 也可以写相对路径my_project::front_of_hosting::hosting
- 也可以re-export函数,即在lib.rs pub use front_of_hosting::serveing::take_order,这里可以直接调用my_project::take_order
*/
pub_hosting::add_to_waitlist();
hosting::add_to_waitlist();
take_order();
}

定义mod

我们在开发过程中需要自己定义mod,rust对于mod的定义有特殊的犯法,如下:

  1. 在lib.rs里声明mod front_of_hosting;注意这里是;
  2. 按照crate树状结构创建同名的.rs文件这里是front_of_hosting.rs
  3. 如果mod存在嵌套子mod的情况,比如这里front_of_hosting嵌套了serving和hosting,则在父mod的rs文件同样声明子mod,这里是mod hosting;和mod serving;注意这里是;
  4. 创建父mod文件夹,这里是front_of_hosting文件夹,在父mod文件夹里创建子mod的同名.rs文件\
  5. 在同名的mod的rs文件中编写代码