使用 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?
我在我的程序中包含了一个库作为子模块。结构如下所示:
.
├── 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?