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

Макрос debug_assert!

Макрос debug_assert! используется для проверки утверждений (assertions) во время разработки. Он работает аналогично макросу assert!, но с важным отличием: проверка выполняется только в отладочном режиме (когда не установлен флаг --release). В релизных сборках этот макрос полностью игнорируется и не добавляет накладных расходов в производительность. Параметром макрос принимает условие, которое нужно проверить. Если условие ложно, программа паникует с сообщением об ошибке.

Синтаксис

debug_assert!(condition);

Пример

Давайте проверим утверждение, которое истинно, и убедимся, что программа не паникует:

fn main() { let x = 5; debug_assert!(x > 0); println!("Check passed"); }

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

"Check passed"

Пример

Давайте проверим утверждение, которое ложно, и увидим, как программа паникует:

fn main() { let x = -5; debug_assert!(x > 0); println!("Check passed"); }

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

thread 'main' panicked at 'assertion failed: x > 0', src/main.rs:4:5

Пример

Макрос можно использовать с дополнительным сообщением для более информативного вывода при панике:

fn main() { let x = -5; debug_assert!(x > 0, "x must be positive, got {}", x); println!("Check passed"); }

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

thread 'main' panicked at 'x must be positive, got -5', src/main.rs:4:5

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

  • макрос panic!,
    который немедленно вызывает панику с сообщением
  • метод unwrap,
    который извлекает значение или паникует при ошибке
  • метод expect,
    который извлекает значение или паникует с сообщением
  • макрос unreachable!,
    который помечает недостижимый код
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить