Как использовать функции из одного файла среди нескольких файлов?

Золотое соотношение отсутствует, поскольку приложения Java имеют все формы и размеры. Для многопользовательского сервера WebSphere EE PermGen будет огромным из-за загрузки десятков корпоративных WAR-систем, но для небольшой встроенной системы PermGen должен быть уменьшен до абсолютного минимума. Другой крайностью была бы база данных в памяти, написанная на Java, которая содержит данные GB, но имеет относительно небольшой PermGen.

PermGen обычно определяется загруженными классами. Если нет библиотек генерации утечки ClassLoader или байт-кода, то у бонкеров, генерирующих миллионы прокси-классов, размер не должен иметь значения. GC на PermGen редко является самой медленной частью полного цикла GC.

К счастью, с Java 8+ у нас теперь есть MetaSpace вместо PermGen, и нам больше не нужно его размер (хотя разумно делать кепку это).

1
задан Shepmaster 20 January 2019 в 04:02
поделиться

1 ответ

Вам нужно mod zzz; только один раз в main.rs.

В aaa.rs и bbb.rs вам нужен use crate::zzz;, а не mod zzz;.

Пример:

Файл src/aaa.rs:

use crate::zzz; // `crate::` is required since 2018 edition

pub fn do_something() {
    zzz::do_stuff();
}

Файл src/bbb.rs:

use crate::zzz;

pub fn do_something_else() {
    zzz::do_stuff();
}

Файл src/main.rs: [1127 ]

// src/main.rs
mod aaa;
mod bbb;
mod zzz;

fn main() {
    aaa::do_something();
    bbb::do_something_else();
}

Файл src/zzz.rs:

pub fn do_stuff() {
    println!("does stuff zzz");
}

Вам понадобится mod zzz; внутри модуля aaa, только если у вас есть каталог с именем aaa и внутри это файлы mod.rs и zzz.rs. Затем вам нужно будет поместить mod zzz; в mod.rs, чтобы сделать подмодуль aaa::zzz видимым для остальной части вашей программы.

0
ответ дан Andrey Tyukin 20 January 2019 в 04:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: