libs (panic | test | assertions)
assert_ne
)assert_ne
is a macro that takes 2 arguments and panics if they are equal. It
works and is implemented identically to assert_eq
and serves as its complement.
This proposal also includes a debug_asset_ne
, matching debug_assert_eq
.
This feature, among other reasons, makes testing more readable and consistent as
it complements asset_eq
. It gives the same style panic message as assert_eq
,
which eliminates the need to write it yourself.
This feature has exactly the same design and implementation as assert_eq
.
Here is the definition:
macro_rules! assert_ne {
($left:expr , $right:expr) => ({
match (&$left, &$right) {
(left_val, right_val) => {
if *left_val == *right_val {
panic!("assertion failed: `(left != right)` \
(left: `{:?}`, right: `{:?}`)", left_val, right_val)
}
}
}
})
}
This is complemented by a debug_assert_ne
(similar to debug_assert_eq
):
macro_rules! debug_assert_ne {
($($arg:tt)*) => (if cfg!(debug_assertions) { assert_ne!($($arg)*); })
}
Any addition to the standard library will need to be maintained forever, so it is
worth weighing the maintenance cost of this over the value add. Given that it is so
similar to assert_eq
, I believe the weight of this drawback is low.
Alternatively, users implement this feature themselves, or use the crate assert_ne
that I published.
None at this moment.