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

Тип never !

Тип ! (never) в Rust - это специальный тип, который не имеет ни одного значения. Он используется для обозначения функций и выражений, которые никогда не возвращают управление вызывающему коду. Это могут быть функции, которые всегда паникуют, либо бесконечно зациклены, либо завершают процесс. Тип ! может быть приведён к любому другому типу, что делает его удобным в конструкциях match, if и loop, где одна из ветвей никогда не завершается.

Синтаксис

fn имя_функции() -> ! { // тело функции, которое никогда не возвращает управление }

Пример

Давайте рассмотрим функцию, которая всегда паникует и возвращает тип !:

fn always_panics() -> ! { panic!("This function never returns"); } fn main() { let res = always_panics(); println!("{}", res); }

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

thread 'main' panicked at 'This function never returns'

Пример

Давайте рассмотрим функцию, которая бесконечно зациклена и возвращает тип !:

fn infinite_loop() -> ! { loop { println!("Running forever"); } } fn main() { let res = infinite_loop(); println!("{}", res); }

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

Running forever Running forever Running forever ...

Пример

Давайте используем тип ! в конструкции match, где одна из ветвей завершает процесс:

fn process_value(value: i32) -> i32 { match value { 0 => std::process::exit(0), _ => value * 2, } } fn main() { let res = process_value(5); println!("{}", res); }

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

10

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

  • тип unit,
    который обозначает отсутствие значения
  • тип bool,
    который принимает значения true или false
  • тип i32,
    который представляет 32-битное целое число
  • тип fn,
    который представляет указатель на функцию
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить