gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 11:48:17 27 4
gpt4 key购买 nike

我正在学习 rust 并且对 cargo 项目的项目结构感到非常困惑。我正在使用这个 page (和 rust 书)供引用。
我正在尝试为不同的结构分离我的项目,以便它们可以拥有自己的文件,类似于 cpp 和类。
所以如果我有

src/main.rs
src/struct_name.rs
我为它创建了mod:
pub mod struct_name
{
pub struct _struct_name
{}
}
我应该能够在 main.rs 中做到这一点:
mod struct_name;
但我遇到的问题是当我试图包含外部 crate 时。例如,我正在尝试实现 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 将永远看不到导出的函数,对吧?

最佳答案

在 main.rs 中:
在 crate 顶部导入的宏在 crate 中的任何地方都可用。

    #[macro_use]
extern crate clap;
mod struct_name
在 struct_name.rs 中:
您只需要在其父模块中定义一个模块。
    use clap::{Arg, App};
// do things

关于rust - rust 中的项目结构——添加额外文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62863119/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com