gpt4 book ai didi

rust - 无法从另一个 crate 导入模块 - Unresolved 导入

转载 作者:行者123 更新时间:2023-11-29 08:12:51 29 4
gpt4 key购买 nike

我正在尝试编写一个名为 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
}

现在当我尝试在另一个 crate 中使用这个 crate 时:

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 .

关于rust - 无法从另一个 crate 导入模块 - Unresolved 导入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29995257/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com