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

Макрос debug_assert!

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

Синтаксис

debug_assert!(condition);

Пример

Давайте проверим условие, которое является истинным:

fn main() { let x = 5; debug_assert!(x > 0); println!("Проверка пройдена"); }

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

"Проверка пройдена"

Пример

Давайте проверим условие, которое является ложным. В отладочной сборке это приведет к панике:

fn main() { let x = -5; debug_assert!(x > 0); println!("Эта строка не выполнится"); }

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

thread 'main' panicked at 'assertion failed: x > 0'

Пример

В релизной сборке (при использовании флага --release) макрос не выполняет проверку, и программа продолжает работу:

fn main() { let x = -5; debug_assert!(x > 0); println!("Программа продолжает работу"); }

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

"Программа продолжает работу"

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

  • макрос assert!,
    который проверяет условие всегда, независимо от режима сборки
  • макрос debug_assert_eq!,
    который проверяет равенство двух значений в отладочном режиме
  • макрос debug_assert_ne!,
    который проверяет неравенство двух значений в отладочном режиме
  • макрос assert_eq!,
    который проверяет равенство двух значений всегда
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить