Вложенные модули и ключевое слово super

Последнее обновление: 29.04.2021

Вложенные модули

Одни модули могут содержать другие:

mod my_module{
	pub mod inner_module{
	
		pub fn test(){
			println! ("Hello from inner_module");
		}
	}
}
fn main(){
	my_module::inner_module::test();
}

Стоит учитывать, что вложенный модуль, как и другой функционал модуля, по умолчанию приватный. Поэтому опять же, чтобы сделать модуль доступным из вне, он определяется с ключевым словом pub. А при обращении к функционалу модуля указываются весь путь к функционалу с учетом внешнего и вложенных модулей:

my_module::inner_module::test();

super

Ключевое слово super применяется для обращения к родительскому модулю. Через super мы можем обращаться в том числе и к приватным функциям родительского модуля:

mod parent_module{
	pub mod child_module{
		pub fn test(){
			super::hello();	// обращаемся к функции из родительского модуля
		}
	}
	
	fn hello(){
		println!("Hello");
	}
}

fn main(){
	parent_module::child_module::test();
}

Здесь родительский модуль parent_module содержит приватную функцию hello и публичный модуль child_module. Внутри вложенного модуля child_module через super мы можем обратиться к родительскому модулю parent_module, например, к его функции hello:

super::hello();
Помощь сайту
Юмани:
410011174743222
Перевод на карту
Номер карты:
4048415020898850