无法从另一个板条箱导入模块 - 未解决的导入
Can't import a module from another crate - unresolved import
我正在尝试编写一个名为 bar
的 crate,结构如下所示
src/
├── bar.rs
└── lib.rs
我的src/lib.rs
看起来像这样
#![crate_type = "lib"]
#![crate_name = "bar"]
#![feature(ip_addr)]
#[allow(dead_code)]
pub mod bar;
我的bar.rs
有
pub struct baz {
// stuff
}
impl baz {
// stuff
}
现在,当我尝试在另一个箱子中使用这个箱子时,例如:
extern crate bar;
use bar::baz;
fn main() {
let cidr = baz::new("Hi");
println!("{}", cidr.say());
}
失败
error: unresolved import `bar::baz`. There is no `baz` in `bar`
我需要在其他地方声明模块吗?
您缺少的重要部分是板条箱定义了它们自己的模块。也就是说,您的 crate bar
隐式定义了一个名为 bar
的模块,但您还在 中创建了一个名为 bar
的模块。您的结构位于这个嵌套模块中。
如果你把你的 main 改成 use bar::bar::baz;
你可以超越这个。不过,您必须决定这是否是您想要的结构。大多数惯用的 Rust 项目不会有额外的 mod
并且会把它弄平:
src/lib.rs
pub struct Baz {
// stuff
}
impl Baz {
// stuff
}
不幸的是,你的示例代码无法编译,因为你有无效的结构定义,并且你调用了不存在的方法 (new
),所以我无法告诉你它还需要什么编译.
此外,结构应该是 PascalCase
。
我正在尝试编写一个名为 bar
的 crate,结构如下所示
src/
├── bar.rs
└── lib.rs
我的src/lib.rs
看起来像这样
#![crate_type = "lib"]
#![crate_name = "bar"]
#![feature(ip_addr)]
#[allow(dead_code)]
pub mod bar;
我的bar.rs
有
pub struct baz {
// stuff
}
impl baz {
// stuff
}
现在,当我尝试在另一个箱子中使用这个箱子时,例如:
extern crate bar;
use bar::baz;
fn main() {
let cidr = baz::new("Hi");
println!("{}", cidr.say());
}
失败
error: unresolved import `bar::baz`. There is no `baz` in `bar`
我需要在其他地方声明模块吗?
您缺少的重要部分是板条箱定义了它们自己的模块。也就是说,您的 crate bar
隐式定义了一个名为 bar
的模块,但您还在 中创建了一个名为 bar
的模块。您的结构位于这个嵌套模块中。
如果你把你的 main 改成 use bar::bar::baz;
你可以超越这个。不过,您必须决定这是否是您想要的结构。大多数惯用的 Rust 项目不会有额外的 mod
并且会把它弄平:
src/lib.rs
pub struct Baz {
// stuff
}
impl Baz {
// stuff
}
不幸的是,你的示例代码无法编译,因为你有无效的结构定义,并且你调用了不存在的方法 (new
),所以我无法告诉你它还需要什么编译.
此外,结构应该是 PascalCase
。