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

Ключевое слово super

Ключевое слово super используется внутри модулей для доступа к элементам родительского модуля. Оно работает по аналогии с self, но если self ссылается на текущий модуль, то super ссылается на модуль уровнем выше. С помощью super можно обращаться к функциям, структурам, константам и другим элементам, объявленным в родительском модуле.

Ключевое слово super можно использовать несколько раз подряд, например super::super, чтобы подняться на два уровня вверх по иерархии модулей. Также его можно комбинировать с self и crate для построения полных путей к элементам.

Синтаксис

super::item super::super::item super::{item1, item2}

Пример

Давайте создадим родительский модуль parent с функцией hello и вызовем её из дочернего модуля child через super:

mod parent { pub fn hello() { println!("Hello from parent"); } pub mod child { pub fn call_parent() { super::hello(); } } } fn main() { parent::child::call_parent(); }

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

"Hello from parent"

Пример

Давайте обратимся к константе родительского модуля из дочернего модуля с помощью super:

mod outer { pub const VALUE: i32 = 42; pub mod inner { pub fn get_value() -> i32 { super::VALUE } } } fn main() { let res = outer::inner::get_value(); println!("{}", res); }

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

42

Пример

Давайте поднимемся на два уровня вверх с помощью super::super и обратимся к элементу самого верхнего модуля:

mod level1 { pub fn top() { println!("Top level"); } pub mod level2 { pub mod level3 { pub fn call_top() { super::super::top(); } } } } fn main() { level1::level2::level3::call_top(); }

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

"Top level"

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

  • ключевое слово mod,
    которое объявляет модуль
  • ключевое слово self,
    которое ссылается на текущий модуль
  • ключевое слово crate,
    которое ссылается на корень текущего крейта
  • ключевое слово use,
    которое импортирует элементы в текущую область видимости
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить