РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
482 of 1245 menu

Видимость модуля

Видимость модуля - это механизм, который определяет, какие элементы (функции, структуры, модули, константы) доступны из других частей программы. По умолчанию все элементы в Rust являются приватными и доступны только внутри своего модуля. Ключевое слово pub делает элемент публичным, а такие модификаторы, как pub(crate) и pub(super), позволяют гибко настраивать область видимости.

Синтаксис

pub fn function_name() {} pub struct StructName {} pub mod module_name {} pub(crate) fn function_name() {} pub(super) fn function_name() {}

Пример

Давайте создадим модуль с приватной и публичной функциями и попробуем вызвать их из другого модуля:

mod my_module { pub fn public_function() { println!("public"); } fn private_function() { println!("private"); } } fn main() { my_module::public_function(); }

Результат выполнения кода:

"public"

Пример

Давайте попробуем вызвать приватную функцию из другого модуля и убедимся, что это вызовет ошибку:

mod my_module { fn private_function() { println!("private"); } } fn main() { my_module::private_function(); }

Компилятор выдаст ошибку, так как функция private_function является приватной и недоступна за пределами своего модуля.

Пример

Давайте используем модификатор pub(crate), чтобы сделать функцию доступной во всём крейте, но не за его пределами:

mod my_module { pub(crate) fn crate_function() { println!("crate"); } } fn main() { my_module::crate_function(); }

Результат выполнения кода:

"crate"

Пример

Давайте используем модификатор pub(super), чтобы сделать функцию доступной только в родительском модуле:

mod outer { pub mod inner { pub(super) fn super_function() { println!("super"); } } pub fn call_super_function() { inner::super_function(); } } fn main() { outer::call_super_function(); }

Результат выполнения кода:

"super"

Смотрите также

  • раздел Видимость,
    который описывает общие правила видимости элементов
  • модификатор pub(crate),
    который открывает доступ в пределах всего крейта
  • модификатор pub(super),
    который открывает доступ в родительском модуле
  • концепция Владение,
    которая тесно связана с организацией модулей
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить