1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
/// Returns `None` if `pred` is `false`, otherwise
/// it returns `Some(result_of_calling_f)`.
///
/// # Example
/// ```
/// use monster::incubation::some_if;
/// assert_eq!(some_if(false, || 42), None    );
/// assert_eq!(some_if(true , || 42), Some(42));
/// ```
pub fn some_if<T, F: FnOnce() -> T>(pred: bool, f: F) -> Option<T> {
    if pred { Some(f()) }
    else { None }
}