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 中的项目结构——添加额外文件的主要内容,如果未能解决你的问题,请参考以下文章