use postfix_macros::postfix_macros;
postfix_macros! {
fn is_prime(v: &u32) -> bool {
!(2..*v).any(|w| *v % w == 0)
.pass_to! { return };
}
fn find_largest_prime(v: u32) -> Option<u32> {
(2..=v).rev()
.find(is_prime)
.pass_to! { return };
}
#[test]
fn primes_test() {
find_largest_prime(10).assert_eq!(Some(7));
find_largest_prime(20).assert_eq!(Some(19));
find_largest_prime(100).assert_eq!(Some(97));
}
}
#[macro_export]
macro_rules! pass_to {
($v:expr, return $l:lifetime) => {
return $l $v;
};
($v:expr, return) => {
return $v;
};
($v:expr, break $l:lifetime) => {
break $l? $v;
};
($v:expr, break) => {
break $v;
};
($v:expr, continue $(l:lifetime)?) => {
continue $l $v;
};
($v:expr, continue) => {
continue $v;
};
}