【问题标题】:Rust Reference ModsRust 参考模块
【发布时间】:2020-02-19 12:03:24
【问题描述】:

我在工作区中有一组文件,我想从另一个目录引用这些文件,但我找不到需要使用的语法。

例子是:

Primary
|_______ First
|            |_____ src
|                    |______ Cool_thing.rs
|_______ Second
            |_____ src
                    |______ main.rs

我想从 main.rs 引用 Cool_things 中的结构

在 Primary 的 Cargo.toml 中我放了:

[workspace]
members= ["First","Second", "Third"]

[dependencies.Second]
First= { path = "First" }

在我的 Second 目录中的 Cargo.toml 中

[dependencies]
First = { path = "../First" }

我一直在我的 main.rs 中尝试一些事情,例如:

extern crate First;
use First::Cool_things::Cool_things;

usemod 的任何变体似乎都不允许我引用 mod Cool_things 中的结构或实现或函数。

【问题讨论】:

  • 欢迎来到 Stack Overflow!很难回答您的问题,因为它不包含minimal reproducible example。您没有提供“主要”的代码。如果您尝试在 Rust Playground 上重现您的错误,如果可能的话,这将使我们更容易为您提供帮助,否则在全新的 Cargo 项目中,然后在 edit 您的问题中包含附加信息。您可以使用Rust-specific MRE tips 来减少您在此处发布的原始代码。谢谢!
  • 您的文件结构没有显示 any Cargo.toml 文件;这些是必需的。

标签: module rust reference workspace


【解决方案1】:

问题是它需要在第一个 src 目录中有一个“lib.rs”。基本上,rust 的文档似乎有点疏忽,如果你想使用本地依赖项,那么你必须有一个 lib.rs 文件,其中列出了你计划访问的所有模块。因此,在 First src 目录中创建 lib.rs 并列出“Mod Cool_things”将允许其他包引用该目录中的 mod 文件。

cargo.toml 文件:在上面的问题中插入有正确的路径和依赖项,问题在于缺少 lib.rs 文件。

因此,如果您正在计划一个多二进制程序,您需要记住在分解代码然后从工作区的其他部分访问模块时拥有一个 lib.rs 文件。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-12-19
    • 2021-03-09
    • 1970-01-01
    • 1970-01-01
    • 2020-07-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多