【问题标题】:Project structure in rust -- adding extra filesrust 中的项目结构——添加额外文件
【发布时间】:2020-11-01 21:31:55
【问题描述】:

我正在学习 rust 并且对货运项目的项目结构感到非常困惑。我正在使用这本书page(和锈书)作为参考。

我正在尝试为不同的结构分离我的项目,以便它们可以拥有自己的文件,类似于 cpp 和类。

如果我有

src/main.rs
src/struct_name.rs

我为它创建了模组:

pub mod struct_name
{
    pub struct _struct_name
    {}
}

我应该可以在 main.rs 中做到这一点:

mod struct_name;

但我遇到的问题是当我尝试包含外部板条箱时。例如,我正在尝试实现 clap 并使用宏。所以我在 igloo.rs 中做了以下操作:

#[macro_use]
extern crate clap;
use clap::{Arg, App};

pub mod struct_name
{
    pub struct _struct_name
    {//do clap things}
}

我收到错误 E0468“'extern crate' 加载宏必须位于 crate 根目录”。这是否意味着我永远不能在 main.rs 或 lib.rs 之外使用宏?我怎样才能以某种方式导出这些函数,以便我可以在 struct_name.rs 中使用它们?我知道我可以在 main.rs 或 lib.rs 中制作导出函数,但如果我在 main.rs 和 lib.rs 中使用 mod,那么 struct_name.rs 将永远看不到导出的函数,对吧?

【问题讨论】:

    标签: rust


    【解决方案1】:

    在 main.rs:
    在 crate 顶部导入的宏在 crate 中随处可用。

        #[macro_use]
        extern crate clap;
        mod struct_name
    

    在 struct_name.rs 中:
    您只需要在其父模块中定义一个模块。

        use clap::{Arg, App};
        // do things
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-06-01
      • 2013-05-23
      • 1970-01-01
      • 2016-09-27
      • 2013-12-26
      • 1970-01-01
      • 2014-07-09
      • 1970-01-01
      相关资源
      最近更新 更多