我正在尝试写一个名为bar
,结构看起来像这样
src/
├── bar.rs
└── lib.rs
My src/lib.rs
看起来像这样
#![crate_type = "lib"]
#![crate_name = "bar"]
#![feature(ip_addr)]
#[allow(dead_code)]
pub mod bar;
My bar.rs
has
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`
我需要在其他地方声明该模块吗?
您缺少的重要部分是板条箱定义了自己的模块。也就是说,你的箱子bar
隐式定义了一个名为bar
,但您还创建了一个名为的模块bar
里面。您的结构驻留在这个嵌套模块中。
如果你将 main 更改为use bar::bar::baz;
你可以超越这个。您必须决定这是否是您想要的结构。大多数惯用的 Rust 项目不会有额外的mod
并将其展平:
src/lib.rs
pub struct Baz {
// stuff
}
impl Baz {
// stuff
}
不幸的是,您的示例代码无法编译,因为您的结构定义无效,并且您调用了不存在的方法(new
),所以我无法告诉你还需要什么来编译。
另外,结构应该是PascalCase
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)