Макрос debug_assert_ne!
Макрос debug_assert_ne! проверяет, что
два переданных значения не равны друг другу.
Если значения оказываются равными, макрос вызывает
панику с указанным сообщением. В отличие от
assert_ne!, этот макрос активен только
в отладочной сборке (при включённой опции
debug_assertions). В релизной сборке
проверка полностью отключается, что позволяет
избежать накладных расходов. Параметрами макрос
принимает два значения для сравнения и, опционально,
сообщение об ошибке с аргументами форматирования.
Синтаксис
debug_assert_ne!(left, right);
debug_assert_ne!(left, right, "message");
debug_assert_ne!(left, right, "message {}", arg);
Пример
Давайте проверим, что два числа не равны друг другу.
Поскольку значения 10 и 20 различны,
паника не возникнет:
fn main()
{
let a = 10;
let b = 20;
debug_assert_ne!(a, b, "a and b must not be equal");
println!("Check passed");
}
Результат выполнения кода:
Check passed
Пример
Давайте проверим равенство двух одинаковых строк.
Так как значения "abcde" и "abcde"
равны, макрос вызовет панику:
fn main()
{
let a = "abcde";
let b = "abcde";
debug_assert_ne!(a, b, "a and b are equal");
println!("Check passed");
}
Результат выполнения кода:
thread 'main' panicked at 'a and b are equal', src/main.rs:4:5
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
Пример
Давайте убедимся, что два элемента вектора не равны.
Значения 1 и 2 различны, поэтому
паника не возникнет:
fn main()
{
let v = vec![1, 2, 3, 4, 5];
debug_assert_ne!(v[0], v[1], "elements must differ");
println!("Elements are different");
}
Результат выполнения кода:
Elements are different
Смотрите также
-
макрос
assert_ne!,
который проверяет неравенство значений в любой сборке -
макрос
debug_assert!,
который проверяет истинность условия в отладочной сборке -
макрос
debug_assert_eq!,
который проверяет равенство значений в отладочной сборке -
макрос
assert!,
который проверяет истинность условия и вызывает панику при ложном результате