Макрос 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!,
который немедленно завершает программу с сообщением об ошибке