2015-11-28 3 views
2

Я пытаюсь разбить свою программу на библиотеку, содержащую несколько подмодулей с помощью структур и функций, и основной файл, который использует все это. Я хочу иметь подмодуль, который содержит полезные функции, которые не нужны нигде, кроме других подмодулей. Однако у меня возникают трудности с импортом этого подмодуля в другой. Грузовой проект называется eant_rust. Мои файлы lib.rs и main.rs находятся в каталоге src. У меня есть папка, называемая модулями, из которой импортируется файл lib.rs. Внутри папки модулей находится файл mod.rs, с двумя подмодулями, с которыми я столкнулся.Функции доступа из подмодуля из другого подмодуля

lib.rs:

pub mod modules; 

main.rs:

extern crate eant_rust; 

fn main() {} 

mod.rs (внутри папки модулей с двух суб-модулей):

pub mod network; 

функции. rs (один подмодуль):

pub fn reverse() {} 
pub fn sum_vec() {} 

network.rs (другой):

use modules::functions; 
functions::reverse(); 
functions::sum_vec(); 

Когда я пытаюсь скомпилировать я получаю следующее сообщение об ошибке: об ошибке: нерешенный импорт modules::functions. Нет functions в modules.

ответ

5

Если я правильно понял ваши файлы выглядеть следующим образом:

lib - 
    |- lib.rs 
    |- main.rs 
    |- modules - 
       |- mod.rs 
       |- functions.rs 
       |- network.rs 

Из того, что вы написали в network.rs вы должны быть в состоянии использовать modules::functions однако, кажется, вы не включили его в модулях/mod.rs

Итак, добавьте строку с mod functions; в модули/mod.rs.

+0

Спасибо, это сработало для меня. Кроме того, чтобы использовать что-либо из модулей, вам не нужно использовать 'pub'? – pengowen123

+0

Нет, если вы находитесь в одном ящике, паб используется для экспорта частей вашего ящика, чтобы другие могли получить к нему доступ. Выезд: https://doc.rust-lang.org/reference.html#visibility-and-privacy – Neikos

Смежные вопросы