从带有 main.rs 文件的本地包导入时未解决导入问题

cuo*_*oka 9 rust rust-crates rust-cargo

我已将库作为子模块包含在我的程序中。结构如下:

\n\n
.\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 my_lib/\n     \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 Cargo.toml\n     \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 src/\n          \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 lib/\n               \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 mod.rs\n               \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 foo.rs\n          \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 main.rs\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 src/\n     \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 main.rs\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 Cargo.toml\n
Run Code Online (Sandbox Code Playgroud)\n\n

在我的程序Cargo.toml文件中,我添加了以下答案的依赖项:

\n\n
[dependencies]\nmy_lib = { path = "./my_lib" }\n
Run Code Online (Sandbox Code Playgroud)\n\n

然而我无法在我的程序中使用这个库,我对 Rust 有点陌生,这个导入系统让我感到非常困惑。我已经尝试过这个main.rs

\n\n
[dependencies]\nmy_lib = { path = "./my_lib" }\n
Run Code Online (Sandbox Code Playgroud)\n\n

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

\n

She*_*ter 7

包可以是库或可执行文件,但不能同时是两者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

也可以看看: