3

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

.
├── 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'错误。

4

1 回答 1

3

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

也可以看看:

于 2019-10-23T13:26:23.517 回答