Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
482 of 1246 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 для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить