Макрос assert_ne!
Макрос assert_ne! проверяет, что два переданных
ему значения не равны друг другу. Если значения
оказываются равными, макрос вызывает панику с
сообщением об ошибке. Если значения не равны,
выполнение программы продолжается без изменений.
Первым и вторым параметром макрос принимает два
значения для сравнения. Дополнительно можно передать
произвольное сообщение, которое будет выведено при
панике.
Макрос assert_ne! чаще всего используется
в тестах для проверки того, что результат работы
функции отличается от некоторого значения.
Синтаксис
assert_ne!(left, right);
assert_ne!(left, right, "сообщение");
assert_ne!(left, right, "сообщение {}", аргумент);
Пример
Давайте проверим, что число 5 не равно
числу 10. Так как значения не равны,
программа завершится успешно:
fn main()
{
assert_ne!(5, 10);
println!("Values are not equal");
}
Результат выполнения кода:
"Values are not equal"
Пример
Давайте проверим, что строка "abcde"
не равна строке "12345":
fn main()
{
let a = "abcde";
let b = "12345";
assert_ne!(a, b);
println!("Strings are not equal");
}
Результат выполнения кода:
"Strings are not equal"
Пример
Давайте сравним два вектора. Так как векторы отличаются, макрос не вызовет панику:
fn main()
{
let v1 = vec![1, 2, 3, 4, 5];
let v2 = vec![1, 2, 3, 4, 6];
assert_ne!(v1, v2);
println!("Vectors are not equal");
}
Результат выполнения кода:
"Vectors are not equal"
Пример
Давайте попробуем сравнить два одинаковых числа. Так как значения равны, макрос вызовет панику, и программа завершится с ошибкой:
fn main()
{
assert_ne!(5, 5, "Values should not be equal");
println!("This line will not be printed");
}
Результат выполнения кода:
thread 'main' panicked at 'Values should not be equal: 5 == 5'
Смотрите также
-
макрос
assert!,
который проверяет истинность логического выражения -
макрос
assert_eq!,
который проверяет равенство двух значений -
макрос
debug_assert_ne!,
который работает как assert_ne!, но только в отладочной сборке -
макрос
panic!,
который останавливает выполнение программы с сообщением об ошибке