#[doc = crate::_tags!(code)]
#[doc = crate::_doc_location!("code/util")]
#[macro_export]
#[cfg_attr(cargo_primary_package, doc(hidden))]
macro_rules! is {
($cond:expr , $then:expr) => {
#[allow(clippy::question_mark, reason = "to remain const-friendly")]
if $cond {
$then
}
};
($cond:expr , $then:expr , $($else:expr)?) => {
if $cond {
$then
} else {
$( $else )?
}
};
(let $pat:pat = $cond:expr , $then:expr) => {
#[allow(clippy::question_mark)]
if let $pat = $cond {
$then
}
};
(let $pat:pat = $cond:expr , $then:expr , $($else:expr)? ) => {
if let $pat = $cond {
$then
} else {
$( $else )?
}
};
}
#[doc(inline)]
pub use is;
#[cfg(test)]
mod test_is {
#[test]
fn is_if() {
assert_eq!('a', is!(true, 'a', 'b'));
assert_eq!('b', is!(false, 'a', 'b'));
}
#[test]
fn is_let() {
let somea = Some('a');
let noa: Option<char> = None;
assert_eq!('a', is!(let Some(a) = somea, a , 'b'));
assert_eq!('b', is!(let Some(a) = noa, a , 'b'));
}
}