1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55
//! Extension traits for `bool`. use type_identity::TypeIdentity; /// Extension trait for `bool`. pub trait BoolExt: TypeIdentity<Type = bool> + Sized { /// Returns Some(`some`()) if self==true.Otherwise returns None. /// /// # Example /// /// ``` /// use core_extensions::bool_extensions::BoolExt; /// /// assert_eq!(true .if_true(|| 100 ),Some(100)); /// assert_eq!(false.if_true(|| 100 ),None); /// /// ``` /// #[inline] fn if_true<T, F>(self, some: F) -> Option<T> where F: FnOnce() -> T, { if self.into_type_val() { Some(some()) } else { None } } /// Returns Some(`some`()) if self==false.Otherwise returns None. /// /// # Example /// /// ``` /// use core_extensions::bool_extensions::BoolExt; /// /// assert_eq!(false.if_false(|| 100 ),Some(100)); /// assert_eq!(true .if_false(|| 100 ),None); /// /// ``` /// #[inline] fn if_false<T, F>(self, some: F) -> Option<T> where F: FnOnce() -> T, { if self.into_type_val() { None } else { Some(some()) } } } impl BoolExt for bool {}