#![deny(missing_docs)]
#[macro_export]
macro_rules! maybe {
($i:ident if $e:expr) => {
if $e { Some($i) } else { None }
};
($i:ident if let $p:pat = $e:expr) => {
if let $p = $e { Some($i) } else { None }
};
}
#[cfg(test)]
mod tests {
#[test]
fn conditional() {
let x = 0;
let x = maybe!(x if x > 0);
assert_eq!(x, None);
let x = 1;
let x = maybe!(x if x > 0);
assert_eq!(x, Some(1));
}
#[test]
fn pattern() {
let x = 0;
let x = maybe!(x if let 1...10 = x);
assert_eq!(x, None);
let x = 1;
let x = maybe!(x if let 1...10 = x);
assert_eq!(x, Some(1));
}
#[test]
fn destructure() {
let x: Result<i32, ()> = Ok(0);
let x = maybe!(i if let Ok(i) = x);
assert_eq!(x, Some(0));
}
}