喜欢的话别忘了点赞、收藏加关注哦(加关注即可阅读全文),对接下来的教程有兴趣的可以关注专栏。谢谢喵!(=^・ω・^=)
7.6.1. 将模块的内容移动到其他文件
如果在模块定义时模块名后边跟的是;
而不是代码块,Rust就会在src
目录下找与模块同名的.rs
文件加载其中的内容。无论模块的内容是在同一个文件里面还是在不同的文件里面,模块树的结构都不会发生变化。
来看一个例子:
rust
mod front_of_house {
pub mod hosting {
pub fn add_to_waitlist() { }
}
}
pub use crate::front_of_house::hosting::add_to_waitlist;
pub fn eat_at_restaurant() {
add_to_waitlist();
}
这样写就是把所有模块放在同一个文件里。如果要把它放在不同的文件里,就要这么写:
Step 1:新建文件
假如要把front_of_house
分出去,就需要在src
目录下创建同名的.rs
文件:
Step 2:剪切代码
把原本在front_of_house
下的代码从原位置剪切到这个front_of_house.rs
这个文件里,也就是把这一段剪切走:
rust
pub mod hosting {
pub fn add_to_waitlist() { }
}
Step 3:修改原处
打开front_of_house
所在的原处,这个时候就不用后面的代码块了,把它连着{}
都删去,加上;
即可(其它的无关代码不要动),原本代码是:
rust
mod front_of_house {
pub mod hosting {
pub fn add_to_waitlist() { }
}
}
pub use crate::front_of_house::hosting::add_to_waitlist;
pub fn eat_at_restaurant() {
add_to_waitlist();
}
改成:
rust
mod front_of_house;
pub use crate::front_of_house::hosting::add_to_waitlist;
pub fn eat_at_restaurant() {
add_to_waitlist();
}
7.6.2. 子模块的拆分
需要注意的是,如果想把模块下的子模块拆出来,就需要新建父模块的同名文件夹,在这个文件下方.rs
文件用于存储子模块或是条目。
举个例子,如果我要把hosting
独立出去成一个单独的文件,操作不仅仅是创建一个同名.rs
文件,而是需要先新建一个父模块的同名文件夹,在这个例子中父模块的名字是front_of_house
,所以就要创建名字为front_of_house
的文件夹。
然后再在这个文件夹下创建与条目名/模块名相同的.rs
文件,在这个例子中是要把hosting
独立出去,所以这个文件应该叫做hosting.rs
。
在hosting.rs
里存储hosting
的内容,也就是:
rust
pub mod hosting {
pub fn add_to_waitlist() { }
}
如果不想要同名的文件和文件夹,可以把文件放进文件夹并把文件改名为mod.rs
!!!
7.6.3. 拆分的优点
随着模块变大,该技术让程序员可以把模块的内容移动到其他文件中。