rust 中的项目结构——添加额外文件

Posted

技术标签:

【中文标题】rust 中的项目结构——添加额外文件【英文标题】:Project structure in rust -- adding extra files 【发布时间】: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 将永远看不到导出的函数,对吧?

【问题讨论】:

【参考方案1】:

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

    #[macro_use]
    extern crate clap;
    mod struct_name

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

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

【讨论】:

以上是关于rust 中的项目结构——添加额外文件的主要内容,如果未能解决你的问题,请参考以下文章

Rust 实战 |创建一个完整的项目

rust 模块组织结构

使用if语句将项目从vb中的结构文件添加到列表框?

Rust 是不是将添加到向量中的单个项目装箱?

根据项目路径在功能区中显示额外选项

如何创建可以在 Rust 多线程服务器中使用的结构?