如何在另一个 bin 中重用主 bin 中的代码?

How to reuse code from the main bin in another bin?

我的项目结构是这样的:

.
├── Cargo.lock
├── Cargo.toml
└── src
    ├── bin
    │   └── other.rs
    ├── main.rs
    └── util.rs

(代码:https://gitlab.com/msrd0/cargo-bin-import

在我的 other.rs 中,我试图重用 util mod 中的代码,它在我的 public mod 中声明为 public mod main.rs 文件。我尝试了以下方法:

上面的

None 有效并给了我类似于此的错误消息:

error[E0432]: unresolved import `crate::util`
 --> src/bin/other.rs:1:12
  |
1 | use crate::util::do_sth;
  |            ^^^^ maybe a missing `extern crate util;`?

error: aborting due to previous error

使用一个库和两个二进制文件,然后在两个二进制文件中重用该库的代码。示例:

Cargo.toml

[lib]
name = "utils"
path = "src/utils.rs"

# cargo build --bin other
[[bin]]
name = "other"
path = "src/bin/other.rs"

# cargo build --bin main
[[bin]]
name = "main"
path = "src/main.rs"

然后use utils::{...}。该路径取自您的问题,但是将 main 放在 bin/ 中并将 utils.rs 重命名为 lib.rs 可能是一种更标准的方法。

如果该库足够通用,您甚至可以在 crates.io 上发布它,让其他人从中受益。