无法从另一个板条箱导入模块 - 未解决的导入

2023-12-01

我正在尝试写一个名为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(使用前将#替换为@)

无法从另一个板条箱导入模块 - 未解决的导入 的相关文章

随机推荐