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

Макрос debug_assert_eq!

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

Синтаксис

debug_assert_eq!(left, right) debug_assert_eq!(left, right, "custom message") debug_assert_eq!(left, right, "custom message: {}", arg)

Пример

Давайте проверим равенство двух одинаковых чисел:

fn main() { let a = 5; let b = 5; debug_assert_eq!(a, b); println!("Values are equal"); }

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

"Values are equal"

Пример

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

fn main() { let a = 5; let b = 10; debug_assert_eq!(a, b, "a and b must be equal"); println!("This line will not be printed"); }

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

thread 'main' panicked at 'assertion failed: `(left == right)` left: `5`, right: `10`: a and b must be equal'

Пример

Давайте проверим равенство строк:

fn main() { let s1 = "abcde"; let s2 = "abcde"; debug_assert_eq!(s1, s2); println!("Strings are equal"); }

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

"Strings are equal"

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

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