main.rs 里使用include!宏包含了另一个文件foo.rs,这样另一个文件就会被直接包含进来,这个在实现一个很大的impl的时候比较有用,比如这个例子里struct Foo的impl被放在了main.rs和foo.rs里
#[macro_use]
use std::*;
include!("foo.rs");
fn main() {
let f = Foo;
f.print1();
f.print2();
}
struct Foo;
impl Foo {
fn print1(&self){
println!("print1");
}
}
foo.rs
impl Foo {
fn print2(&self){
println!("print2");
}
}
运行结果:
print1
print2
注:foo.rs名字随便取的,只要与include!后面的名字一样就可以了。另外foo.rs并不一定要在同一个目录,只要路径完整即可
另外提示下,同一个type的impl可以分开写,但要放在同一个文件里,否则就要用上面的include!宏了
比如这个就把impl分开写
fn main(){
let f = Foo;
f.print1();
f.print2();
}
struct Foo;
impl Foo{
fn print1(&self){
println!("print1");
}
}
impl Foo{
fn print2(&self){
println!("print2");
}
}