Структура проекта в ржавчине - добавление дополнительных файлов - PullRequest
0 голосов
/ 12 июля 2020

Я изучаю ржавчину и очень запутался в структуре проекта для автомобилей go проектов. Я использую эту страницу (и книгу ржавчины) для справки.

Я пытаюсь разделить свой проект на разные структуры, чтобы они могли иметь свой собственный файл, похожий на cpp и классы.

поэтому, если у меня есть

src/main.rs
src/struct_name.rs

и я создаю для него мод:

pub mod struct_name
{
    pub struct _struct_name
    {}
}

, я смогу сделать это в main.rs:

mod struct_name;

Но проблема, с которой я сталкиваюсь, заключается в том, что я пытаюсь включить внешние ящики. Например, я пытаюсь реализовать хлопок и использовать макросы. Итак, в igloo.rs я делаю следующее :

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

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

Мне выдается ошибка E0468 «макросы загрузки внешнего ящика должны находиться в ящике root». Означает ли это, что я никогда не смогу использовать макросы вне main.rs или lib.rs? Как я могу как-то экспортировать эти функции, чтобы использовать их в struct_name.rs? Я понимаю, что могу выполнять функции экспорта в main.rs или lib.rs, но если я использую мод в main.rs и lib.rs, то struct_name.rs никогда не увидит экспортируемые функции, верно?

1 Ответ

0 голосов
/ 14 июля 2020

В main.rs: Макросы, импортированные в верхнюю часть ящика, доступны везде в ящике.

    #[macro_use]
    extern crate clap;
    mod struct_name

В struct_name.rs: Вам нужно только определить модуль в его родительском элементе.

    use clap::{Arg, App};
    // do things
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...