gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 08:08:16 28 4
gpt4 key购买 nike

我的项目结构是这样的:

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

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

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

  • 使用 util::do_sth
  • 使用 crate::util::do_sth
  • 使用 cargo_bin_import::util::do_sth(带和不带 extern crate)
  • mod util;使用 util::do_sth
  • extern crate util;使用 util::do_sth(由 rustc 建议)

以上都不起作用,并给了我类似于此的错误消息:

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"

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

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

关于import - 如何在另一个 bin 中重用主 bin 中的代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57450632/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com