【问题标题】:Rust - Use module in a parent directoryRust - 在父目录中使用模块
【发布时间】:2021-04-26 20:32:53
【问题描述】:

我的文件结构类似于以下内容:

src/
--clients/
----queue_client/
------mod.rs
--data_evaluator/
----data_evaluator.rs

在 data_evaluator 中,我想使用 queue_client 模块,但是当我在 data_evaluator.rs 中使用 mod queue_client 时,我收到以下错误 - File not found for module queue_client。如果我将它移动到data_evaluator 文件夹中,它只会找到该模块。

我的问题是,如何正确使用消费者代码目录之外的模块?抱歉,如果有一个简单的方法可以做到这一点,我确实尝试了很长时间但找不到方法。

【问题讨论】:

  • crate::clients::queue_client
  • 您似乎混淆了moduse。使用定义了一个新模块,并且应该位于新模块的直接父级中。所以你的结构应该是crate root { mod clients { mod queue_client }; mod data_evaluator { use crate::clients::queue_client } }。另请注意,mod.rs 有点过时:因为 2018 版 src/main.rs; module/submodule.rs; module.rs 是首选文件结构。另请注意,您只能use 标记为pub 的项目。
  • 这能回答你的问题吗? Rust mod files in the same folder vs use

标签: rust rust-crates


【解决方案1】:

你似乎有点困惑。 在 Rust 中,您构建模块树。 您使用mod 将模块注册为当前模块的子模块。 您使用use 在当前模块中使用模块。 这篇文章可能会澄清一些事情:http://www.sheshbabu.com/posts/rust-module-system/

除此之外,要使用树中比当前模块更高的模块,您可以使用crate 到达模块树的根目录。 所以在你的情况下,crate::clients::queue_client

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-06-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-04
    • 1970-01-01
    • 2015-12-03
    相关资源
    最近更新 更多