Macro gazebo::cmp_chain [−][src]
macro_rules! cmp_chain { ($e:expr) => { ... }; ($e:expr, $($x:expr),+ $(,)?) => { ... }; }
Performs a chain of comparison operation expressions yielding std::cmp::Ordering
, supporting
early exit upon hitting the first expressions that doesn’t yield std::cmp::Ordering::Equal
and returning the result of that. This is useful for easily writing a sequence of expressions
necessary to yield a comparison result.
The macro is expanded inplace, so any expressions dealing with Result
types are allowed
provided that the larger scope allows returning result.
use std::cmp::Ordering; use gazebo::cmp_chain; assert_eq!( cmp_chain! { 1.cmp(&1), Ok::<_, ()>(2.cmp(&2))?, 3.cmp(&4), panic!("won't reach this"), }, Ordering::Less, );