我的理解是,根模块中的extern crate foo;
声明可以导入到use foo::bar
的任何子模块中。虽然这在一个子模块中起作用,但它在另一个子模块中不起作用。任何想法为什么这可能不起作用?
|--- main.rs
|--- module1
|--- mod.rs
|--- submod1.rs
|--- module2
|--- mod.rs
|--- submod2.rs
// main.rs
extern crate rustc_serialize;
mod module1;
mod module2;
// module1/mod.rs
mod submod1;
// module1/submod1.rs
use rustc_serialize::json; // WORKS
// module2/mod.rs
mod submod2;
// module2/submod2.rs
use rustc_serialize::json; // DOESN'T WORK
编辑:我忘记了在我的项目中,module1
被定义为一个库包,它将它从通常的导入名称空间中分离出来