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

Ключевое слово pub(super)

Ключевое слово pub(super) позволяет сделать элемент видимым только для родительского модуля. Это полезно, когда нужно скрыть детали реализации от других частей программы, но предоставить к ним доступ из родительского модуля. Элемент с такой видимостью не будет доступен внутри текущего модуля для внешних модулей, но будет виден на уровень выше.

Синтаксис

pub(super) fn function_name() {} pub(super) struct StructName; pub(super) const CONSTANT: i32 = 10;

Пример

Давайте рассмотрим пример, где функция internal видна только родительскому модулю:

mod outer { pub(super) fn internal() { println!("Called from parent"); } pub mod inner { pub fn call_internal() { // super refers to outer module super::internal(); } } } fn main() { outer::inner::call_internal(); }

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

"Called from parent"

Пример

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

mod outer { pub(super) fn internal() { println!("Called from parent"); } } fn main() { // Error: function `internal` is private outer::internal(); }

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

error[E0603]: function `internal` is private

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

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