Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
819 of 1246 menu
◀ ▶

Макрос assert_eq!

Макрос assert_eq! проверяет, равны ли два переданных ему значения. Если значения равны, макрос ничего не делает и выполнение программы продолжается. Если значения не равны, макрос вызывает панику с сообщением об ошибке, в котором отображаются оба значения. Параметрами макрос принимает два значения для сравнения, а также, опционально, строку форматирования и аргументы для вывода пользовательского сообщения об ошибке. Этот макрос часто используется в модульных тестах для проверки ожидаемого результата.

Синтаксис

assert_eq!(left, right); assert_eq!(left, right, "custom message"); assert_eq!(left, right, "custom message with {}", arg);

Пример

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

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

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

"Values are equal"

Пример

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

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

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

"Strings are equal"

Пример

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

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

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

thread 'main' panicked at 'assertion failed: `(left == right)` left: `5`, right: `10`'

Пример

Давайте добавим собственное сообщение об ошибке:

fn main() { let a = 5; let b = 10; assert_eq!(a, b, "a and b must be equal"); }

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

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

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

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