使用 main.rs 文件从本地板条箱导入时未解析的导入

Unresolved import when importing from a local crate with a main.rs file

我在我的程序中包含了一个库作为子模块。结构如下所示:

.
├── my_lib/
     ├── Cargo.toml
     └── src/
          ├── lib/
               ├── mod.rs
               └── foo.rs
          └── main.rs
├── src/
     └── main.rs
└── Cargo.toml

在我的程序的 Cargo.toml 文件中,我在 :

之后添加了依赖项
[dependencies]
my_lib = { path = "./my_lib" }

但是我无法在我的程序中使用这个库,我对 Rust 有点陌生,这个导入系统让我很困惑。我在 main.rs:

中试过这个
use my_lib::foo;

但是我收到 unresolved import 'my_lib' 错误。

crate 可以是库或可执行文件,但不能同时是两者。您的 my_lib 包含一个 main.rs 文件,这意味着 Cargo 会将其视为可执行文件。您不能从可执行文件导入。

您将需要重构您的代码。也许您实际上是想让 my_lib 成为一个库,在这种情况下它应该有一个顶级 lib.rs。您可能想要:

  • 删除my_lib/src/main.rs
  • my_lib/src/lib/mod.rs 移动到 my_lib/src/lib.rs
  • my_lib/src/lib/foo.rs移动到my_lib/src/foo.rs

另请参阅:

  • Rust package with both a library and a binary?