gpt4 book ai didi

module - 如何使用新的本地模块?

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

我无法导入和使用我编写的模块,不确定哪里出错了。

我的起始目录结构是:

/src/main.rs <- contains fn main()
/Cargo.toml

我想从我拥有的一个大主文件中重构一些代码,所以我运行了

cargo new mnemonic

留给我:

/src/main.rs <- contains fn main()
/Cargo.toml
/mnemonic/src/lib.rs
/mnemonic/Cargo.toml

在我创建的 /mnemonic/src/lib.rs 中:

pub mod mnemonic;

然后将我的代码放入 /mnemonic/src/mnemonic.rs(有 2 个我想从 main 使用的公共(public)函数)。我从 mnemonic/ 运行 cargo build 然后回到我的主 src,我试过了

extern crate mnemonic;

use mnemonic;

我也试过use mnemonic::mnemonic;

在所有情况下,它都无法找到箱子或给出 Unresolved 导入错误。

我还尝试将包含 2 个发布函数的代码放入 /src/mnemonic.rs

并在 /src/main.rs 中放置:

use mnemonic;

我也试过将我的代码放在 mnemonic/src/lib.rs 中并尝试 extern crate mnemonic;使用来自 src/main.rs

的助记符;

我是否应该在您提出的任何情况下编辑 Cargo.toml

最佳答案

更新的答案

是的,您需要告诉 Cargo 在哪里可以找到您的箱子。在您的二进制文件 Cargo.toml 中,添加如下内容:

[dependencies.mnemonic]
path = "./mnemonic"

原始答案

当您创建一个新的 crate 时,它​​会自动具有一层命名空间:crate 本身的名称。此外,如果它是您当前的箱子,您不需要extern use箱子!

使用来自其他 crate 的 crate mnemonic

这可能是您想要做的:创建一个名为 mnemonic 的新 crate,然后您将拥有一个 src/lib.rs。将您的代码放在那里,然后您可以通过其他 crate 使用它

extern crate mnemonic;
use mnemonic::ItemInLibDotRs; // Make sure this item is marked as `pub`!

使用 crate mnemonic中的嵌套模块mnemonic

假设您有一些要对最终用户隐藏的实现细节。我们将把它放在 crate 中的一个模块中,仅在同一个 crate 中使用它

将您的代码放入src/mnemonic.rs。在 src/lib.rs 中,您将引用该模块和项目:

use mnemonic::ItemInMnemonic; // Make sure this is `pub`!
mod mnemonic;

使用嵌套模块 mnemonic from the crate mnemonic in other crate

从您的包中导出模块,然后从其他包中引用它:

// src/lib.rs
pub mod mnemonic; // Note the module is now public

// In the crate that consumes mnemonic
extern crate mnemonic;
use mnemonic::mnemonic::ItemInMnemonic;

虽然最后一个选项有点难看,但您可能不想让您的用户键入 mnemonic::mnemonic,这就是为什么我建议将它放在 src/lib 中.rs.

关于module - 如何使用新的本地模块?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27947424/

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