道尊:没有办法,你的法力已经消失,我的法力所剩无几,除非咱们重新修行,在这个世界里取得更多法力之后,或许有办法下降。——《拔魔》
\;\\\;\\\;
目录 前言跨文件mod多文件mod 跨文件mod //my_mod.rspub mod mod_1{//默认私有fn say1(){println!("[say1]private function");}pub fn say2(){println!("[say2]public function");//调用子模块的函数mod_2::dog();}pub fn say3(){println!("[say3]public function");say2();//调用子模块的函数mod_2::run();}//模块的嵌套pub mod mod_2{fn say1(){println!("[mod_2][say1]private function");//不知道会不会重写}pub fn say2(){println!("[mod_2][say2]public function");//不知道会不会重写} //此函数只在当前mod中可见pub(self) fn interior_f(){println!("[mod_2][interior_f]only used in this mod");}//只在my_mod::mod_1中可见pub(in crate::my_mod::mod_1) fn dog(){println!("[mod_2][dog]do it!");interior_f();}//此函数只在上一层mod中可见pub(super) fn run(){println!("[mod_2][run]run!");}//再嵌套一层看看效果pub mod mod_3{pub fn say1(){println!("[mod_3][say1]marvelous!");}pub fn say2(){println!("[mod_3]say2");say1(); //本mod_3的say1//say2(); //本mod_3的say2,递归报错//interior_f(); //只在mod_2中,不能拿到下面来//dog(); //不能拿到下面来//run(); //只在mod_1中,不能拿到下面来}}}} //function.rsmod my_mod;pub use my_mod::*;fn main() {//mod_1::say1(); //私有函数调用不了mod_1::say2();mod_1::say3();//mod_1::mod_2::say1(); //私有函数调用不了mod_1::mod_2::say2();//mod_1::mod_2::interior_f(); //私有函数调用不了//mod_1::mod_2::some(); //私有函数调用不了//mod_1::mod_2::run(); //私有函数调用不了mod_1::mod_2::mod_3::say1();mod_1::mod_2::mod_3::say2();}\;\\\; 想办法在mod_3中调用mod_1和mod_2
...pub mod mod_3{pub fn say1(){println!("[mod_3][say1]marvelous!");}pub fn say2(){println!("[mod_3]say2");say1(); //本mod_3的say1//say2(); //本mod_3的say2,递归报错//子模块调用父模块use crate::mod_1::mod_2;mod_2::interior_f(); mod_2::dog(); use crate::mod_1;mod_1::say3(); //只在mod_1中,不能拿到下面来}}...\;\\\;\\\;
多文件mod文件夹的名字就是mod的名字,里面必须有一个mod.rs,和python里的__init__.py一样。
//student.rspub fn run_2(){println!("i am a student");} //teacher.rspub fn run_3(){println!("i am a teacher");} //staff.rspub fn run_1(){println!("i am a staff");}interface文件夹中的mod
//mod.rspub mod staff;pub mod student;pub mod teacher;\;\\\; 调用模块
//run.rsmod interface;use interface::staff;use interface::student;use interface::teacher;fn main(){staff::run_1();student::run_2();teacher::run_3();}